SSIS2012以降のスクリプトタスク内でSQLServerに接続する最新の方法

wp78de

SSISのスクリプトタスク内でSQLデータベース接続する方法をインターネットまたはSOで検索すると、次のような.NETv1.1ishコードが見つかります。

ConnectionManager cm;
System.Data.SqlClient.SqlConnection sqlConn;
System.Data.SqlClient.SqlCommand sqlComm;

cm = Dts.Connections["ADO.NET.SqlDB"];    
sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);

sqlComm = new System.Data.SqlClient.SqlCommand("your SQL Command", sqlConn);
sqlComm.ExecuteNonQuery();

cm.ReleaseConnection(sqlConn);

後で導入される.NET機能をうまく利用する更新されたコードを探しています。

まず、以下のコードはどうですか。これは、SSIS 2012以降のスクリプトタスク内でSQLServerに接続するための現在推奨されている方法ですか、それともここで何かが足りないのですか?

ConnectionManager cm = Dts.Connections["ADO.NET.SqlDB"];
using (var sqlConn = (SqlConnection)cm.AcquireConnection(Dts.Transaction))
{
    if (sqlConn.State != ConnectionState.Open)
        sqlConn.Open();

    using (var sqlComm = new SqlCommand(
        String.Format("UPDATE myTab SET Processed = 4 where ID = '{0}'",
        idNumber), sqlConn))
    {
        return sqlComm.ExecuteNonQuery();
    }
}

されてReleaseConnection()まだ必要?されsqlConn.Open()、実際にSSISのコンテキストで必要?


1年後、できれば少し賢く、次のようなコードで解決しました。

ConnectionManager cm = Dts.Connections["ADO.NET.SqlServerDB"];
var sqlConn = (SqlConnection)cm.AcquireConnection(Dts.Transaction);
using (var sqlCmd = new SqlCommand(
  "INSERT INTO apou_moodle_import(id_num, username, email) VALUES(@IdNum, @Username, @Email)",
  sqlConn))
{
    sqlCmd.CommandType = CommandType.Text;
    sqlCmd.Parameters.AddWithValue("@IdNum", newUser.id_num);
    sqlCmd.Parameters.AddWithValue("@Username", newUser.username);
    sqlCmd.Parameters.AddWithValue("@Email", newUser.email);

    int rowsAffected = sqlCmd.ExecuteNonQuery();
}
cm.ReleaseConnection(sqlConn);

それで、私はConnectionManagerを使い続けます。ReleaseConnectionただし、SqlConnection。OpenCloseはSSISコンテキストでは必要ありません。さらに、パラメータを使用して安全にプレイしてください。

Ferdipux

using構造を使用すると変数の破棄を自動化し、より適切に処理できます。ただし、これsqlConnは単純なクラスはなく、ConnectionManagerインスタンスです。使用を開始すると、を呼び出しAcquireConnection、終了時にを呼び出しますReleaseConnectionReleaseConnectionこのデータソースにはいくつかのハウスキーピングの特定を行うことができます。ConnectionManagerの実装によってReleaseConnectionは、呼び出されたかどうかを自由にチェックして呼び出す場合があります。

私の理解では、usingほとんどの場合、コードはOKであるはずです。接続を繰り返し開いて解放しないと、問題が発生する可能性があります-接続プールなどが実行される可能性があります。内部をtryにラップします-finallyブロックして、ReleaseConnectionが確実に実行されるようにします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

クラスター内のサービスに接続する

分類Dev

カスタムSSIS2012コンポーネントの展開

分類Dev

SSIS2012を使用してSQLServer2014からExcelファイルにデータをエクスポートする

分類Dev

SSISスクリプトタスク-ADO.NETを接続してDataTableにデータを入力する

分類Dev

ASP.NETCoreからSQLServerに接続するためのベストプラクティスは?

分類Dev

ロジックアプリ内のサービスバス接続文字列にkeyvaultを使用する方法

分類Dev

SSIS2012で特定のタスクの実行時ステータスをキャプチャする

分類Dev

Windows10およびWindowsServer 2012以降で `node.js`アプリケーションをホストする最新の方法は何ですか?

分類Dev

リモートホスト上のdockerコンテナ内でansibleタスクを実行するために接続する方法(ssh経由)

分類Dev

Cloudformationスタック/パイプラインのCodeCommitリポジトリに接続する方法

分類Dev

インターネットからVMのエクスプレスアプリに接続する方法は?

分類Dev

Debian-インターネット接続の準備ができたらすぐに起動時にスクリプトを実行する方法は?

分類Dev

ssis2012タスクezapi

分類Dev

既存のtcp接続でbashスクリプトからhttpサーバーにアクセスする方法は?

分類Dev

wpa_supplicant:スクリプトから特定のESSIDに接続する方法は?

分類Dev

特定のネットワークに接続するスクリプトを作成する方法

分類Dev

postgresqlデータベースに接続するための1つのスクリプトでパスワードを提供する方法

分類Dev

bashスクリプトを使用してリモートSQLServerに接続する

分類Dev

LANに接続された他のコンピューターでSQLServerデータベースを使用してデスクトップアプリケーションを実行する方法

分類Dev

あるアプリでのデータベース接続のリークは、サーバー内の他のアプリに影響しますか?

分類Dev

スクリプトを介して複数のssh接続に接続する

分類Dev

スクリプトの終了時にssh接続を強制的に終了する方法

分類Dev

ネットワーク内のデータベースへのSQLServer接続

分類Dev

wp8以降のアプリを外部データベースに接続する方法(リモート)

分類Dev

スクリプトのネストされたssh接続内でインタラクティブシェルを実行する

分類Dev

bashスクリプトで非表示のSMBサーバーに接続する

分類Dev

2つのSQLServerテーブルをクエリで接続し、データを動的に使用する方法

分類Dev

スクリプトタスク内のオブジェクトSSIS変数にアクセスする方法は?

分類Dev

Dockerコンテナ内のPythonスクリプトからローカルホスト上のmysqlデータベースに接続する方法

Related 関連記事

  1. 1

    クラスター内のサービスに接続する

  2. 2

    カスタムSSIS2012コンポーネントの展開

  3. 3

    SSIS2012を使用してSQLServer2014からExcelファイルにデータをエクスポートする

  4. 4

    SSISスクリプトタスク-ADO.NETを接続してDataTableにデータを入力する

  5. 5

    ASP.NETCoreからSQLServerに接続するためのベストプラクティスは?

  6. 6

    ロジックアプリ内のサービスバス接続文字列にkeyvaultを使用する方法

  7. 7

    SSIS2012で特定のタスクの実行時ステータスをキャプチャする

  8. 8

    Windows10およびWindowsServer 2012以降で `node.js`アプリケーションをホストする最新の方法は何ですか?

  9. 9

    リモートホスト上のdockerコンテナ内でansibleタスクを実行するために接続する方法(ssh経由)

  10. 10

    Cloudformationスタック/パイプラインのCodeCommitリポジトリに接続する方法

  11. 11

    インターネットからVMのエクスプレスアプリに接続する方法は?

  12. 12

    Debian-インターネット接続の準備ができたらすぐに起動時にスクリプトを実行する方法は?

  13. 13

    ssis2012タスクezapi

  14. 14

    既存のtcp接続でbashスクリプトからhttpサーバーにアクセスする方法は?

  15. 15

    wpa_supplicant:スクリプトから特定のESSIDに接続する方法は?

  16. 16

    特定のネットワークに接続するスクリプトを作成する方法

  17. 17

    postgresqlデータベースに接続するための1つのスクリプトでパスワードを提供する方法

  18. 18

    bashスクリプトを使用してリモートSQLServerに接続する

  19. 19

    LANに接続された他のコンピューターでSQLServerデータベースを使用してデスクトップアプリケーションを実行する方法

  20. 20

    あるアプリでのデータベース接続のリークは、サーバー内の他のアプリに影響しますか?

  21. 21

    スクリプトを介して複数のssh接続に接続する

  22. 22

    スクリプトの終了時にssh接続を強制的に終了する方法

  23. 23

    ネットワーク内のデータベースへのSQLServer接続

  24. 24

    wp8以降のアプリを外部データベースに接続する方法(リモート)

  25. 25

    スクリプトのネストされたssh接続内でインタラクティブシェルを実行する

  26. 26

    bashスクリプトで非表示のSMBサーバーに接続する

  27. 27

    2つのSQLServerテーブルをクエリで接続し、データを動的に使用する方法

  28. 28

    スクリプトタスク内のオブジェクトSSIS変数にアクセスする方法は?

  29. 29

    Dockerコンテナ内のPythonスクリプトからローカルホスト上のmysqlデータベースに接続する方法

ホットタグ

アーカイブ