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
Libérer: 2025-01-20 01:42:11
original
573 Les gens l'ont consulté

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 :

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);
        }
    }
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal