2017-08-28 1 views
2

Salut J'essaie de créer une fonction de déclencheur azure timer C# qui s'exécute toutes les 5 minutes (juste pour tester - sera changée tous les jours) pour mettre à jour une colonne de base de données SQL. Voici mon code comme suit dans l'application Fonction TimerTriggerCSharp1C# Minuterie Fonction SQL Azure

using System; 
    using System.Data.SqlClient; 
using System.Text.RegularExpressions; 
using Microsoft.SqlServer.Server; 




public static void Run(TimerInfo myTimer, TraceWriter log) 
{ 
log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); 
     string connStr = "someconstring"; 
      SqlConnection conn = new SqlConnection(connStr); 
      conn.Open(); 
      string query = "UPDATE dbo.test_workstations SET email =   @email,  duration = @duration, status = @status, startDate = @startDate, endDate = @endDate WHERE endDate = @endDateToRemove"; 
     SqlCommand cmd = new SqlCommand(query, conn); 
     cmd.Parameters.AddWithValue("@email", DBNull.Value); 
     cmd.Parameters.AddWithValue("@duration", DBNull.Value); 
     cmd.Parameters.AddWithValue("@status", 0); 
     cmd.Parameters.AddWithValue("@startDate", DBNull.Value); 
     cmd.Parameters.AddWithValue("@endDate", DBNull.Value); 
     cmd.Parameters.AddWithValue("@endDateToRemove", DateTime.Now.ToShortDateString()); 
     cmd.ExecuteNonQuery(); 
     } 



} 

En fait ce que je suis en train de faire est la table de mise à jour pour définir les valeurs NULL sur la base si une colonne montre la date d'aujourd'hui.

Toute aide s'il vous plaît je reçois un tas d'erreurs en azur - cela fonctionne en studio visuel! Run.csx (4,17): erreur CS0234: Le type ou le nom de l'espace de nommage 'SqlServer' n'existe pas dans l'espace de noms 'Microsoft' (manque-t-il une référence d'assembly? Run.csx (13,13): erreur CS0246: Le type ou le nom de l'espace de noms 'SqlConnection' est introuvable (vous manque une directive using ou une référence d'assembly? Run.csx (13,38): erreur CS0246: Le type ou le nom de l'espace de noms 'SqlConnection' est introuvable (une directive using ou une référence d'assembly vous manque-t-elle?)

2017-08-28T15: 46: 27.422)

2017-08-28T15: 46: 27.422 run.csx (16,13): erreur CS0246: Le type ou le nom de l'espace de noms 'SqlCommand' est introuvable (une directive using ou une référence d'assembly est-elle manquante?)

2017-08-28T15: 46: 27.422 run.csx (16,34): erreur CS0246: Le type ou le nom de l'espace de noms 'SqlCommand' est introuvable (une directive using ou une référence d'assembly est-elle manquante?)

2017-08-28T15: 46: 27.454 Exception lors de l'exécution de la fonction: Functions.TimerTriggerCSharp1. Microsoft.Azure.WebJobs.Script: la compilation du script a échoué.

2017-08-28T15: 46: 27,485 Fonction terminé (échec, Id = 612e3097-849f-4816-b026-777cfb50c46a, durée = 157ms)

+0

Quelle est la raison d'utiliser "Microsoft.SqlServer.Server"? l'importation de cet espace de noms semble redondante. –

Répondre

2

Vous avez besoin d'une référence à l'Assemblée System.Data.dll, qui en C# Script vous comme ceci:

#r "System.Data" 

using System; 
using System.Data.SqlClient; 
. . . 

System.Data.dll fait partie du .NET Framework base de bibliothèque de classes (BCL) (il est garanti d'être présent), mais il est pas référencé par défaut par l'environnement Azure Functions. Ceci est expliqué here dans les docs Azure Functions.

Et vous n'avez pas besoin d'importer l'espace de noms Microsoft.SqlServer.Server. Tout ce dont vous avez besoin se trouve dans System.Data.SqlClient.

+0

Merci beaucoup, je ne sais pas comment j'ai raté ça – rahulchawla