ホームページ > バックエンド開発 > C++ > C# で複数行の SQL スクリプト ファイルを効率的に実行するにはどうすればよいですか?

C# で複数行の SQL スクリプト ファイルを効率的に実行するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-18 14:51:09
オリジナル
463 人が閲覧しました

How Can I Efficiently Execute Multi-Line SQL Script Files in C#?

C# を使用して .SQL スクリプト ファイルを実行します

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>
ログイン後にコピー

このメソッド内:

  • SMO は、ターゲット データベースへの接続で初期化されます。
  • スクリプトはファイルから読み取られ、実行のために SMO に渡されます。
  • ExecuteNonQuery は、SQL Server インスタンスでスクリプトを実行するために使用されます。

以上がC# で複数行の SQL スクリプト ファイルを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート