1

これはSSIS package SQL job not using new environment variable configurationに似ていますが、開発用SQL Server ボックスでテストを行ったとき、SQL Server エージェントを再起動する必要はありませんでした。そして正直なところ、それが誰かがこの製品で自分自身を「傷つける」のを防ぐために必要なものであるなら. . . それは絶対に受け入れられません。

更新:そして今、 SSISパッケージSQLジョブが新しい​​環境変数構成を使用していないというコメントをフォローアップすると、おそらく解決策になります。

そうではない。エージェントを再起動しました。サイコロはありません。ジョブは引き続き正常に実行されます。SQL Server エージェントとサービスを再起動しました。繰り返しますが、失敗はありません。

これは、 SSIS 2012 SQL Agent Job ConnectionString vs InitialCatalogにも周辺的に関連しているように聞こえますが、私は 2005 年から SSIS を使用しており、個々のコンポーネントから接続文字列が構成されているのを見たことがありません。常に接続文字列を .config ファイルに入れ、成功しました。

解決できなかった問題があります。正直なところ、バグのように見えますが、私はそれほど傲慢になりたくありません。

テスト環境で Windows Server 2012 R2 で SQL Server 2012 SP3 を実行しています。

私の開発ボックスでは、VS2012 + SSDT-BI を実行しています。

単一の SSIS 2012 プロジェクトでソリューションを構築しました。

  • SSIS プロジェクトを Test SQL Server ボックスに展開しました。
  • 新しい環境を構成しました (Fred と呼びましょう)。
  • Fred 環境に変数を追加します。
  • これらの変数の一部は接続文字列です。
  • SSISDB ツリーの SSIS プロジェクトに戻ります。右クリックして構成します。
  • プロジェクトのすべての接続マネージャーの接続文字列プロパティ (のみ) を、Fred の接続文字列変数の 1 つから構成するように設定しました。

これで、Fred 環境から構成するように配線された、少なくとも接続に関してはすべてが揃いました。

  • パッケージを実行する SQL Server エージェント ジョブ (SSIS タイプ) を作成しました。
  • Configure from environment .\Fred というボックスにチェックを入れます。
  • ジョブ構成を完了します。
  • ジョブを右クリックし、[ステップでジョブを開始] を選択します。. .'

ジョブが実行されます。わーい!すべてが機能します。パッケージはすべて実行されます。(みんなで喜びのダンス!)

今ここに私が解決できない部分があります。

システム テストの一環として (私は 2012 年以降のプロジェクト展開モデルに慣れていないため慎重です)、Fred 環境変数の 1 つに格納されている接続文字列の値を変更します。この接続文字列は、私の SSIS プロジェクトの接続マネージャーの接続文字列 (私はこれを 3 回確認しました) が使用するように構成されたものでした。

接続文字列が無効/不完全になり、同じ SQL エージェント ジョブを実行すると、実行されたパッケージが失敗 (検証) することが期待されますよね?

まあ何を推測します。仕事は成功します。(喜びのダンスが止まります。) すべてのパッケージが正常に実行されます。テストデータベース環境を確認すると、接続文字列が間違って完成した DB のテーブルに行が追加されました (Fred 環境で)。

それで、うーん、まあ、何かを見逃したのではないかと思います。戻って、無効または不完全な接続文字列を含む環境変数を削除します。

再度ジョブを実行します。ジョブは成功します。ええと、なに?

  • SQL Server 2012 の開発インスタンスを起動します (ちなみに、SP3 ではなく RTM)。
  • 同じプロジェクト接続マネージャー/環境構成マッピングを使用してテスト プロジェクトをデプロイします
  • 私は同じ手順を実行します。. .

しかし今回は、期待どおりにジョブが失敗します。注: SQL Server エージェントの再起動は必要ありません。

  • テストボックスに戻ります
  • SQL Agent (SSIS) ジョブを右クリックします
  • [プロパティ] > [ステップ] (ページ) > [編集] (最初のステップ。1 つしかありません) に移動すると、次の警告が表示されます。

パラメーター "SomeOtherSSISProjectParameter" は環境変数を使用するように構成されていますが、環境変数が選択されていません。「環境」チェックボックスをオンにして、使用する環境を指定するか、パラメータにリテラル値を指定します。(Microsoft.DataTransformationServices.DTSExecUI.Controls)

え、なに!?

  • まず、このジョブ ステップの [環境] チェック ボックスは既にオンになっています。
  • 第 2 に、このパラメーターは Fred 環境に関連付けられていないか、マップされていません。変更してから削除した変数。
  • 3 番目に、環境変数の値が null または空ではありません。最初に環境に追加したときから変更されていません。

(この時点で、SSISDB が破損していると思います。)

クリックして警告を通過しました。SSIS パッケージの SQL Server エージェントの構成ページで、(何も変更せずに) [OK] をクリックしようとすると、孤立した環境構成に関連する予想されるエラー メッセージが表示されます。

接続マネージャー "MySSISProjConnManagerName" のプロパティ "ConnectionString" は、"MyFredEnviroVariableName" という名前の環境変数から値を受け取るように構成されていますが、環境 ".\Fred" には "MyFredEnviroVariableName" という名前の環境変数がありません。別の環境を選択するか、プロパティにリテラル値を使用してください。(Microsoft.DataTransformationServices.DTSExecUI.Controls)

良いニュースは、この破損したジョブ/ステップを保存するために [OK] をクリックできないことですが、悪いニュースは、[キャンセル] をクリックでき、ジョブを右クリックして [ステップでジョブを開始] を選択できることです。. .' 絶対にすべきではないときに正常に完了するようにします。

はい、エージェントを再起動しました。はい、サーバーを再起動しました。

SQL Server 2012 の開発インスタンス (RTM) でシナリオをテストしましたが、再現できません。他の誰でもできますか?さらに良いことに、修正ソリューションはありますか? SP4?

これに関するヘルプは大歓迎です。私に関する限り、これは 2012 でプロジェクト展開モデルを使用するためのショーストッパーです。

4

0 に答える 0