次のことを行う SSIS パッケージがあります。 サーバーのテーブルから接続文字列を選択します。接続文字列は、サーバーの名前とドメイン (つまり、Dalin.myhouse.com) であるか、サーバーへの直接の IP です。
パッケージは、各接続文字列を反復処理し、定義された「グローバル」変数を設定します。この変数は、変数デザイナーで作成されました。接続文字列ごとに、パッケージはサーバーに関する情報を取得します。
私が抱えている問題は、サーバー IP をリストに追加するときに、「フレンドリ名」がその時点でわからない可能性があるため、サーバー IP を接続文字列列とフレンドリ名列の両方に入れることです。テーブル。反復の終了後、そのテーブル内のサーバー エントリのフレンドリ名列を更新して、SERVERPROPERTY('Servername') を使用してサーバーからサーバー名が取得されるようにします。
これを行うには、次のコードで ExecuteSQL タスクを使用したいと思います。
UPDATE [myDB].[mySchema].[myServers]
SET [ServerName] = VarA
WHERE ConnectionString = VarB
前のコードは、myServers テーブルが存在するサーバーへの静的接続を使用しています。
VarA は、SERVERPROPERTY('Servername') を使用して別の SQLTask で設定される ServerName に設定するグローバル値を表します。現在の反復が使用しているのと同じサーバーを使用してサーバーに接続する必要があるため、別のタスクにする必要があります。
VarB は、すべての反復の開始時に、リスト内の次の接続文字列に設定されます。
これをスクリプト タスクとスクリプト コンポーネントに使用する方法の例を見てきましたが、単純に ExecuteSQL タスクを使用してこれを達成したいと思います。
概要:
ServerA に接続し、2 つのグローバル変数を入力します。
ServerB に接続し、2 つのグローバル変数を使用してテーブル内の特定の行を更新します。
何か案は?