Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann ich eine .sql-Datei von C# ausführen?

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

Sie sollten SMO nicht benötigen, um Abfragen auszuführen. Versuchen Sie stattdessen, das SqlCommand-Objekt zu verwenden. Entfernen Sie diese using-Anweisungen. Verwenden Sie diesen Code, um die Abfrage auszuführen:

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

Entfernen Sie außerdem den Projektverweis auf SMO. Hinweis:Sie sollten Ressourcen ordnungsgemäß bereinigen.

Aktualisierung:

Die ADO.NET-Bibliotheken unterstützen das Schlüsselwort 'GO' nicht . Es sieht so aus, als hätten Sie folgende Optionen:

  1. Parse das Skript. Entfernen Sie die Schlüsselwörter „GO“ und teilen Sie das Skript in separate Stapel auf. Führen Sie jeden Batch als eigenen SqlCommand aus.
  2. Senden Sie das Skript an SQLCMD in der Shell (Antwort von David Andres).
  3. Verwenden Sie SMO wie den Code aus dem Blogpost.

Eigentlich denke ich, dass SMO in diesem Fall die beste Option ist, aber Sie müssen herausfinden, warum die DLL nicht gefunden wurde.