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

Comment puis-je exécuter efficacement des scripts SQL volumineux avec des commandes GO en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-20 01:42:11518parcourir

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

Exécutez efficacement de gros scripts SQL contenant des commandes GO en C#

Question :

Utiliser SqlCommand.ExecuteNonQuery() pour exécuter de gros scripts SQL contenant plusieurs lots séparés par des instructions GO est un défi car il interprète GO comme une syntaxe non valide.

Solution 1 : Traitement par lots multiples

Une solution consiste à diviser le script SQL en lots individuels basés sur les lignes GO et à exécuter chaque lot séparément. Bien que cette méthode fonctionne, elle peut être fastidieuse et sujette aux erreurs pour les scripts volumineux.

Solution 2 : Objets de gestion SQL Server (SMO)

Une solution plus efficace consiste à exploiter les objets de gestion SQL Server (SMO), qui prennent en charge nativement le délimiteur de commande GO.

Exemple de code :

<code class="language-csharp">public static void Main()
{
    // SQL连接字符串
    string sqlConnectionString = "Integrated Security=SSPI;" +
                                  "Persist Security Info=True;Initial Catalog=Northwind;Data Source=(local)";

    // 从目录获取SQL脚本
    DirectoryInfo di = new DirectoryInfo("c:\temp\sqltest\");
    FileInfo[] rgFiles = di.GetFiles("*.sql");

    // 使用SMO执行每个脚本
    foreach (FileInfo fi in rgFiles)
    {
        string script = File.ReadAllText(fi.FullName);
        using (SqlConnection connection = new SqlConnection(sqlConnectionString))
        {
            Server server = new Server(new ServerConnection(connection));
            server.ConnectionContext.ExecuteNonQuery(script);
        }
    }
}</code>

Bibliothèques supplémentaires :

Une autre option consiste à utiliser la bibliothèque de Phil Haack, qui encapsule la fonctionnalité d'exécution de scripts SQL à l'aide de 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