2017-08-31 4 views
0

J'ai une procédure stockée dans ma base de données dans une base de données SQL. Je travaille avec SQL Server 2012. Je voudrais construire un exécutable dans Visual Studio 2013 en C# qui exécute cette procédure stockée. J'ai fait une tentative de base mais je rencontre une erreur juste en essayant de faire mon SqlConnection. Voici mon code. J'ai un Try/Catch où le Catch envoie mon email avec l'erreur rencontrée. Il me dit que je reçois la première erreur à la ligne 22 qui est ma déclaration using.Exécution d'une procédure stockée SQL dans un exécutable Visual Studio

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:

Ce qui suit est le message d'erreur que je reçois -

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

Pouvez-vous montrer, capture d'écran de l'erreur? –

+0

détails d'erreur s'il vous plaît, et aussi, je vous recommande d'éviter cette vieille SqlCommand, et essayez d'utiliser ** Entity Framework **, Code First ou DataBase First (cela vous permet de mapper des SPs) –

+7

@VictorHugoTerceros il n'y a rien de mal avec une SqlCommand . Entity Framework ajoute beaucoup de complexité et pour l'exécution d'un SP, cela n'apporte aucun avantage. – stuartd

Répondre

0

Sauf si vous essayez d'utiliser 2 x bases de données, il y a 3 choses que vous devez vérifier ici.

  1. Assurez-vous l'attribut

catalogue = AQB_MON

fait référence à la base de données correcte. A en juger par votre question, probablement AQB_MON ou AQB_RMS

  1. À moins que vous référencez un schéma autre que dbo, il semble que votre procédure stockée est prefexed avec "AQB_RMS.". Essayez de retirer cette

    actuel

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

    Modifier pour

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

  2. Pour vérifier si la connexion est en cours d'ouverture et la procédure stockée exécutée, vous pouvez utiliser le MS SQL Profiler.