En C#, l'exécution de fichiers de script .SQL nécessite des considérations particulières. Cette question traite de la difficulté d'exécuter de tels fichiers, qui peuvent contenir des instructions segmentées s'étendant sur plusieurs lignes.
Défis et solutions
Les tentatives d'exécution du script à l'aide de ExecuteNonQuery d'ODP.NET se sont révélées inefficaces. La génération d'un processus pour appeler sqlplus rencontrait des problèmes de blocage et de redirection de sortie.
Solution utilisant les objets de gestion Microsoft SQL Server (SMO)
La solution présentée ici exploite SMO, une API de code managé pour gérer et configurer SQL Server. Voici un extrait de code illustrant cette approche :
<code class="language-csharp">using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; using System.IO; using System.Data.SqlClient; public partial class ExcuteScript : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string sqlConnectionString = @"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ccwebgrity;Data Source=SURAJIT\SQLEXPRESS"; string script = File.ReadAllText(@"E:\Project Docs\MX462-PD\MX756_ModMappings1.sql"); SqlConnection conn = new SqlConnection(sqlConnectionString); Server server = new Server(new ServerConnection(conn)); server.ConnectionContext.ExecuteNonQuery(script); } }</code>
Dans cette méthode :
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!