Utilisez la commande GO pour exécuter efficacement de gros scripts SQL
Lors de l'exécution de gros scripts SQL en C# contenant plusieurs lots séparés par des instructions GO, la méthode intégrée SqlCommand.ExecuteNonQuery() peut rencontrer des erreurs lors du traitement de ces instructions.
Une meilleure façon
Envisagez d'utiliser SQL Server Management Objects (SMO), qui prend en charge les délimiteurs GO. Cette approche est plus efficace et offre une expérience d’exécution transparente.
Détails de mise en œuvre
<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>
Méthodes alternatives
Si SMO n'est pas disponible, pensez à utiliser la bibliothèque écrite par Phil Haack pour gérer les délimiteurs GO :
https://www.php.cn/link/3cdad14c5d7c1e1fa307772a876b42d7
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!