Heim >Backend-Entwicklung >C++ >Wie kann ich große SQL-Skripte mit GO-Befehlen in C# effizient ausführen?

Wie kann ich große SQL-Skripte mit GO-Befehlen in C# effizient ausführen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-20 01:42:11576Durchsuche

How Can I Execute Large SQL Scripts with GO Commands in C# Efficiently?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn