Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Skrip SQL Besar dengan Perintah GO dalam C# Dengan Cekap?

Bagaimanakah Saya Boleh Melaksanakan Skrip SQL Besar dengan Perintah GO dalam C# Dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2025-01-20 01:42:11519semak imbas

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

Melaksanakan skrip SQL besar yang mengandungi arahan GO dalam C# dengan cekap dengan cekap

Soalan:

Menggunakan SqlCommand.ExecuteNonQuery() untuk melaksanakan skrip SQL besar yang mengandungi berbilang kelompok yang dipisahkan oleh pernyataan GO adalah mencabar kerana ia mentafsir GO sebagai sintaks tidak sah.

Penyelesaian 1: Pemprosesan berbilang kelompok

Salah satu cara ialah membahagikan skrip SQL kepada kelompok individu berdasarkan baris GO dan melaksanakan setiap kelompok secara berasingan. Walaupun kaedah ini berfungsi, ia boleh membosankan dan terdedah kepada ralat untuk skrip yang besar.

Penyelesaian 2: Objek Pengurusan Pelayan SQL (SMO)

Penyelesaian yang lebih cekap ialah memanfaatkan Objek Pengurusan SQL Server (SMO), yang secara asli menyokong pembatas arahan GO.

Kod sampel:

<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>

Pustaka tambahan:

Pilihan lain ialah menggunakan perpustakaan Phil Haack, yang merangkumi fungsi melaksanakan skrip SQL menggunakan pembatas GO: https://www.php.cn/link/3cdad14c5d7c1e1fa307772a876b42d7

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Skrip SQL Besar dengan Perintah GO dalam C# Dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn