Gunakan arahan GO untuk melaksanakan skrip SQL yang besar dengan cekap
Apabila melaksanakan skrip SQL besar dalam C# yang mengandungi berbilang kelompok yang dipisahkan oleh pernyataan GO, kaedah SqlCommand.ExecuteNonQuery() terbina dalam mungkin menghadapi ralat semasa memproses pernyataan ini.
Cara yang lebih baik
Pertimbangkan untuk menggunakan SQL Server Management Objects (SMO), yang menyokong pembatas GO. Pendekatan ini lebih cekap dan memberikan pengalaman pelaksanaan yang lancar.
Butiran pelaksanaan
<code class="language-csharp">using Microsoft.SqlServer.Management.Smo; // 示例代码: public static void Main() { string scriptDirectory = "c:\temp\sqltest\"; string sqlConnectionString = "Integrated Security=SSPI;" + "Persist Security Info=True;Initial Catalog=Northwind;Data Source=(local)"; DirectoryInfo di = new DirectoryInfo(scriptDirectory); FileInfo[] rgFiles = di.GetFiles("*.sql"); foreach (FileInfo fi in rgFiles) { FileInfo fileInfo = new FileInfo(fi.FullName); string script = fileInfo.OpenText().ReadToEnd(); using (SqlConnection connection = new SqlConnection(sqlConnectionString)) { Server server = new Server(new ServerConnection(connection)); server.ConnectionContext.ExecuteNonQuery(script); } } }</code>
Kaedah alternatif
Jika SMO tidak tersedia, pertimbangkan untuk menggunakan perpustakaan yang ditulis oleh Phil Haack untuk mengendalikan pembatas GO:
https://www.php.cn/link/3cdad14c5d7c1e1fa307772a876b42d7
Atas ialah kandungan terperinci Bagaimana untuk Cekap Melaksanakan Skrip SQL Besar dengan Perintah GO dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!