Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come posso eseguire un .sql da C#?

using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

Non dovresti aver bisogno di SMO per eseguire le query. Prova invece a usare l'oggetto SqlCommand. Rimuovere queste istruzioni using. Usa questo codice per eseguire la query:

 SqlConnection conn = new SqlConnection(sqlConnectionString);
 SqlCommand cmd = new SqlCommand(script, conn);
 cmd.ExecuteNonQuery();

Rimuovere inoltre il riferimento del progetto a SMO. Nota:vorrai ripulire le risorse correttamente.

Aggiornamento:

Le librerie ADO.NET non supportano la parola chiave 'GO' . Sembra che le tue opzioni siano:

  1. Analizza lo script. Rimuovere le parole chiave "GO" e dividere lo script in batch separati. Esegui ogni batch come il proprio SqlCommand.
  2. Invia lo script a SQLCMD nella shell (risposta di David Andres).
  3. Utilizza SMO come il codice del post del blog.

In realtà, in questo caso, penso che SMO possa essere l'opzione migliore, ma dovrai scoprire perché la dll non è stata trovata.