Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je exécuter un .sql à partir de C# ?

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

Vous ne devriez pas avoir besoin de SMO pour exécuter des requêtes. Essayez d'utiliser l'objet SqlCommand à la place. Supprimez ces instructions using. Utilisez ce code pour exécuter la requête :

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

Supprimez également la référence de projet à SMO. Remarque :vous devrez nettoyer les ressources correctement.

Mise à jour :

Les bibliothèques ADO.NET ne prend pas en charge le mot clé 'GO' . Il semble que vos options soient :

  1. Analyser le script. Supprimez les mots-clés 'GO' et divisez le script en lots séparés. Exécutez chaque lot comme son propre SqlCommand.
  2. Envoyez le script à SQLCMD dans le shell (réponse de David Andres).
  3. Utilisez SMO comme le code de l'article de blog.

En fait, dans ce cas, je pense que SMO peut être la meilleure option, mais vous devrez rechercher pourquoi la dll n'a pas été trouvée.