C# では、.SQL スクリプト ファイルを実行するには特別な考慮事項が必要です。この質問では、複数行にまたがるセグメント化されたステートメントが含まれる可能性があるこのようなファイルを実行することの難しさについて説明します。
課題と解決策
ODP.NET の ExecuteNonQuery を使用してスクリプトを実行しようとしましたが、効果がないことが判明しました。 sqlplus を呼び出すプロセスを生成すると、ハングや出力リダイレクトの問題が発生しました。
Microsoft SQL Server 管理オブジェクト (SMO) を使用したソリューション
ここで紹介するソリューションは、SQL Server を管理および構成するためのマネージド コード API である SMO を活用しています。このアプローチを示すコード スニペットは次のとおりです:
<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>
このメソッド内:
以上がC# で複数行の SQL スクリプト ファイルを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。