使用GO指令高效執行大型SQL腳本
在C#中執行包含多個由GO語句分隔的批次的大型SQL腳本時,內建的SqlCommand.ExecuteNonQuery()方法可能會在處理這些語句時遇到錯誤。
更佳方法
考慮使用SQL Server Management Objects (SMO),它支援GO分隔符號。這種方法更有效率,並提供無縫的執行體驗。
實作細節
<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>
替代方法
如果SMO不可用,可以考慮使用Phil Haack編寫的用於處理GO分隔符的函式庫:
https://www.php.cn/link/3cdad14c5d7c1e1fa307772a876b42d7
以上是如何在C#中使用GO指令高效執行大型SQL腳本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!