Heim >Backend-Entwicklung >C++ >Wie kann ich große SQL-Skripte mit GO-Befehlen in C# effizient ausführen?
Führen Sie große SQL-Skripte mit GO-Befehlen effizient in C# aus
Frage:
Die Verwendung von SqlCommand.ExecuteNonQuery()
zum Ausführen großer SQL-Skripts mit mehreren durch GO-Anweisungen getrennten Batches ist eine Herausforderung, da GO als ungültige Syntax interpretiert wird.
Lösung 1: Mehrfachstapelverarbeitung
Eine Möglichkeit besteht darin, das SQL-Skript basierend auf GO-Zeilen in einzelne Stapel aufzuteilen und jeden Stapel separat auszuführen. Obwohl diese Methode funktioniert, kann sie bei großen Skripten mühsam und fehleranfällig sein.
Lösung 2: SQL Server Management Objects (SMO)
Eine effizientere Lösung ist die Nutzung von SQL Server Management Objects (SMO), das das GO-Befehlstrennzeichen nativ unterstützt.
Beispielcode:
<code class="language-csharp">public static void Main() { // SQL连接字符串 string sqlConnectionString = "Integrated Security=SSPI;" + "Persist Security Info=True;Initial Catalog=Northwind;Data Source=(local)"; // 从目录获取SQL脚本 DirectoryInfo di = new DirectoryInfo("c:\temp\sqltest\"); FileInfo[] rgFiles = di.GetFiles("*.sql"); // 使用SMO执行每个脚本 foreach (FileInfo fi in rgFiles) { string script = File.ReadAllText(fi.FullName); using (SqlConnection connection = new SqlConnection(sqlConnectionString)) { Server server = new Server(new ServerConnection(connection)); server.ConnectionContext.ExecuteNonQuery(script); } } }</code>
Zusätzliche Bibliotheken:
Eine weitere Option ist die Verwendung der Bibliothek von Phil Haack, die die Funktionalität der Ausführung von SQL-Skripten mit GO-Trennzeichen kapselt: https://www.php.cn/link/3cdad14c5d7c1e1fa307772a876b42d7
Das obige ist der detaillierte Inhalt vonWie kann ich große SQL-Skripte mit GO-Befehlen in C# effizient ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!