2017-08-31 2 views
0

Ich habe eine gespeicherte Prozedur in meiner Datenbank in einer SQL-Datenbank. Ich arbeite mit SQL Server 2012. Ich möchte eine ausführbare Datei in Visual Studio 2013 in C# erstellen, die diese gespeicherte Prozedur ausführt. Ich habe einen grundlegenden Versuch gemacht, aber ich stoße auf einen Fehler, der nur versucht, meine SqlConnection zu machen. Unten ist mein Code. Ich habe eine Try/Catch, wo die Catch sendet mir eine E-Mail mit dem Fehler aufgetreten. Es sagt mir, dass ich den ersten Fehler in Zeile 22 erhalte, die meine using Anweisung ist.Ausführen von gespeicherten SQL-Prozedur in Visual Studio-ausführbare Datei

try 
     { 
      //create a connection to the database 
      string ConnString = ConfigurationManager.ConnectionStrings["AirMonRead"].ConnectionString; 

      using (SqlConnection con = new SqlConnection(ConnString)) 
      { 
       con.Open(); 
       SqlCommand cmd = new SqlCommand("AQB_RMS.p_Temp_AirVisionSiteLog", con); 
       cmd.CommandType = CommandType.StoredProcedure; 

       con.Close(); 
      } 

     } 

Edit:

Hier finden Sie die Fehlermeldung, die ich erhalte -

encountered the error: System.ArgumentException: Keyword not supported: 'metadata'. at 
System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable 
parsetable, String connectionString, Boolean buildChain, Hashtable 
synonyms, Boolean firstKey) at 
System.Data.Common.DbConnectionOptions..ctor(String connectionString, 
Hashtable synonyms, Boolean useOdbcRules) at 
System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) at 
System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, 
DbConnectionOptions previous) at 
System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, 
DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) at 
System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) at 
System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) at 
System.Data.SqlClient.SqlConnection..ctor(String connectionString, 
SqlCredential credential) at 
System.Data.SqlClient.SqlConnection..ctor(String connectionString) at 
LogWriter.Program.Main(String[] args) in 
c:\inetpub\wwwroot\DEQ\LogWriter\LogWriter\Program.cs:line 22 
+0

Können Sie zeigen, Screenshot des Fehlers? –

+0

Fehler Details bitte, und auch, ich empfehle Ihnen, diese alte SqlCommand zu verwenden, und versuchen ** Entity Framework **, Code First oder DataBase First (damit Sie SPs zuordnen) –

+7

@VictorHugoTerceros gibt es nichts falsch mit einem SqlCommand . Entity Framework fügt eine Menge Komplexität hinzu und für das Ausführen eines SP fügt es null Vorteile hinzu. – stuartd

Antwort

0

Es sei denn, Sie versuchen, 2 x-Datenbanken zu verwenden, gibt es drei Dinge, die Sie hier überprüfen.

  1. das Attribut Stellen Sie sicher,

Katalog = AQB_MON

Verweis auf die richtige Datenbank macht. Gemessen an Ihrer Frage, wahrscheinlich AQB_MON oder AQB_RMS

  1. Es sei denn, Sie ein Schema anders als dbo verweisen, es sieht aus wie wird Ihre gespeicherte Prozedur prefexed mit "AQB_RMS.". Versuchen Sie das Entfernen dieses

    Aktuelle

    SqlCommand cmd = new SqlCommand ("AQB_RMS p_Temp_AirVisionSiteLog", con);

    Change To

    SqlCommand cmd = new SqlCommand ("p_Temp_AirVisionSiteLog", con);

  2. Um zu überprüfen, ob die Verbindung geöffnet und die gespeicherte Prozedur ausgeführt wird, können Sie MS SQL Profiler verwenden.

Verwandte Themen