使用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中文网其他相关文章!