2012-10-02 2 views
0

Je dois souvent générer des scripts pour les procédures stockées sur SQL Server Management Studio. J'ai besoin de créer une application WPF qui va prendre le fichier produit et l'exécuter. Je sais que vous pouvez le faire:L'application WPF exécute les scripts SQL Server

SqlCommand insert = new SqlCommand(sql, conn); 
insert.ExecuteNonQuery(); 

Si je passe les scripts entiers le fichier texte dans SQL, ce sera tout exécuter?

+0

Pourquoi voudriez-vous attendre à exécuter moins que la Sql vous transmit? –

+0

Lorsque j'ai utilisé ce qui précède, il a été exécuté une procédure stockée pas CREATE, DROP, etc. Je suppose qu'il va exécuter l'intégralité du script mais jusqu'à ce que j'ai eu l'occasion de tester je voulais savoir si SqlCommand exécuterait quelque chose. – user1166905

Répondre

2

Regardez ceci: How to execute an .SQL script file using c#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using Microsoft.SqlServer.Management.Smo; 
using Microsoft.SqlServer.Management.Common; 
using System.IO; 
using System.Data.SqlClient; 

[...]

private void Execute(object sender, EventArgs e) 
{ 
    string sqlConnectionString = @"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ccwebgrity;Data Source=SURAJIT\SQLEXPRESS"; 

    FileInfo file = new FileInfo(@"E:\Project Docs\MX462-PD\MX756_ModMappings1.sql"); 

    string script = file.OpenText().ReadToEnd(); 

    SqlConnection conn = new SqlConnection(sqlConnectionString); 

    Server server = new Server(new ServerConnection(conn)); 

    server.ConnectionContext.ExecuteNonQuery(script); 
    file.OpenText().Close();  
} 
+0

Est-ce que cela fonctionnera également en utilisant SqlCommand? – user1166905

+0

@ user1166905 'SqlCommand' fonctionnera tant que vous n'avez pas d'instruction' GO' dans votre script sql. Si vous voulez strictement utiliser 'SqlCommand', vous devez diviser votre fichier en plusieurs instructions et les utiliser en utilisant une boucle. Supprimez les mots clés 'GO' et divisez le script en lots séparés. Ensuite, exécutez chaque lot comme son propre 'SqlCommand'. – SeToY

+0

Ne pas avoir le luxe de temps pour le diviser, avoir à essayer avec le serveur ci-dessus, ne semble pas aimer malgré l'ajout de Microsoft.SqlServer – user1166905

Questions connexes