Maison >développement back-end >C++ >Comment exécuter efficacement de gros scripts SQL avec des commandes GO en C# ?

Comment exécuter efficacement de gros scripts SQL avec des commandes GO en C# ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-20 01:46:13172parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn