トラブルシューティング : SQL Server エージェントを使用した SSIS パッケージ実行 (SQL Server ビデオ)

適用対象 : Microsoft SQL Server Integration Services

作成者 : カルラ サボータ、Microsoft Corporation

再生時間 : 00:12:12

サイズ : 9.50 MB

種類 : WMV ファイル

このビデオを見る

関連ヘルプ トピック :

SQL Server エージェントのジョブ ステップから SSIS パッケージを呼び出したときに SSIS パッケージが実行されない

dtexec ユーティリティ

パッケージの構成を追加する方法

パッケージの保護レベルの設定

Integration Services のロールの使用

その他のビデオ :

SQL Server エージェントを使用して SSIS パッケージ実行を自動化する方法 (SQL Server ビデオ)

ビデオの概要

このビデオでは、SQL Server エージェントのジョブ ステップから呼び出したときに SQL Server Integration Services パッケージが実行されない問題のトラブルシューティング方法を説明します。 このパッケージは、SQL Server エージェントの外では正常に動作します。

ビデオの内容

ビデオのタイムスタンプ 音声

00:00

こんにちは。カルラ サボータです。 Microsoft SQL Server Integration Services 製品のドキュメント作成を担当しています。

このビデオでは、SQL Server エージェントのジョブ ステップから呼び出したときに SQL Server Integration Services パッケージが実行されない問題のトラブルシューティング方法を説明します。 このパッケージは、SQL Server エージェントの外では正常に動作します。

学習するのは、プロキシ アカウントを作成する手順、パッケージの ProtectionLevel プロパティ設定を変更する手順、機微なデータをパッケージの構成ファイルに保存する手順、SQL Server msdb データベースにパッケージを格納する手順など、この問題を解決するために推奨されている方法です。

ご覧のように、このジョブは Integration Services パッケージの実行に失敗しています。

SQL Server エージェントのジョブ ステップから呼び出したパッケージが実行されない場合は、次のいずれかの状況が考えられます。

  • ジョブ ステップとしてパッケージを実行するユーザー アカウントが、元のパッケージの作成者と異なる。
    または
  • パッケージ外のリソースへの接続またはアクセスに必要な権限が、ユーザー アカウントにない。

ジョブ ステップからパッケージを呼び出したユーザー アカウントが元のパッケージ作成者と異なる場合、パッケージの保護レベルによってパッケージの実行が妨げられることがあります。 これは、そのユーザー アカウントがパッケージの暗号化またはパッケージ内の機微なデータの暗号化を解除できないためか、パッケージが必要とする機微なデータをそのユーザー アカウントが提供できないためです。

機微なデータとは、接続文字列のパスワード部分や、機微であるとマークされている変数などです。

暗号化および機微なデータに関する問題については、推奨されている解決方法が 2 つあります。

01:53

1 つ目の解決方法は、パッケージを SQL Server msdb データベースに格納し、保護レベルを [アクセス コントロールをサーバー ストレージおよびロールに依存する (Rely on server storage and roles for access control)] に設定することです。 この操作を行うには、SQL Server Management Studio の Integration Services サービスを使用します。

これにより、このパッケージに対する読み取りアクセスおよび書き込みアクセスが、データベース ロールによって制御されるようになります。 パッケージのリーダー ロールに、Integration Services 固定データベース レベル ロールのいずれかを割り当てるか、ユーザー定義のデータベース レベル ロールを割り当てる必要があります。 固定データベース レベル ロールには、db_ssisadmin、db_ssisoperator、および db_ssisltduser があります。 このデモでは、パッケージに db_ssisadmin を割り当てます。

パッケージに固定データベース レベル ロールを割り当てた場合、ジョブ ステップからパッケージを呼び出すユーザー アカウントは、そのロールのメンバである必要があります。 パッケージにユーザー定義ロールを割り当てた場合、ユーザー アカウントは、いずれかの固定データベース レベル ロールのメンバであると共に、そのユーザー定義ロールのメンバである必要があります。

03:59

2 つ目の解決方法は、Business Intelligence Development Studio でパッケージの ProtectionLevel プロパティ設定を EncryptSensitiveWithPassword に変更することです。

パッケージの ProtectionLevel プロパティにアクセスするには、パッケージ制御フロー内の任意の場所をクリックし、[プロパティ (Properties)] ウィンドウで [ProtectionLevel] を選択します。

次に、SQL Server エージェント ジョブ ステップのコマンド ラインを修正し、機微なデータを暗号化するパスワードが含まれるようにします。 パスワードを追加するには、dtexec コマンド プロンプト ユーティリティの /Decrypt パラメータを使用します。 これにより、SQL Server エージェントのジョブ ステップが dtexec ユーティリティを使用してパッケージを実行するようになります。

05:22

暗号化および機微なデータに関する問題を解決する 3 つ目の方法は、さきほどと同様に Business Intelligence Development Studio を使用して、パッケージの ProtectionLevel プロパティ設定を DontSaveSensitive に変更することです。

このプロパティ設定では、パッケージが暗号化されず、機微なデータがパッケージと一緒には保存されません。 このため、データの保存にはパッケージ構成ファイルを使用します。 このデモでは、DestinationConnectionOLEDB 接続マネージャ用に、接続文字列のパスワード部分を保存します。

SQL Server エージェントのジョブ ステップによってパッケージが実行されると、作成された構成ファイルから機微なデータが読み込まれます。

このファイルは、必ずセキュリティで保護されたフォルダに保存してください。

ここまで、暗号化および機微なデータに関する問題の解決方法を見てきました。

エージェントのジョブ ステップでパッケージの実行に失敗するもう 1 つの原因は、ユーザー アカウントの権限に関する問題であり、

パッケージ外のリソースへの接続またはアクセスに必要な権限が、ユーザー アカウントにないことが考えられます。

08:08

ユーザー アカウントの権限をテストするには、コマンド プロンプトウィンドウを開き、RunAs コマンドを実行します。

mydomain\myuser の部分は、アカウントの資格情報に格納されている認証情報に置き換えてください。 プロンプトが表示されたら、アカウントのパスワードを入力します。

権限に関する問題解決のために推奨されている方法は、必要な権限のある、SQL Server エージェントのプロキシ アカウントを作成することです。 このプロキシ アカウントもパッケージ内の機微なデータの暗号化を解除することができます。

パッケージを別のコンピュータに移動し、パッケージの ProtectionLevel プロパティを EncryptSensitiveWithUserKey または EncryptAllWithUserKey に設定した場合は、この方法を使用できないことがあるので注意してください。

09:12

プロキシ アカウントを作成するには、sysadmin 固定サーバー ロールのメンバである必要があります。 そうでない場合は、msdb データベースの SQLAgentOperatorRole、SQLAgentReaderRole、または SQLAgentUserRole のメンバである必要があります。

プロキシ アカウントを作成するには、Transact-SQL クエリを実行するか、SQL Server Management Studio の [新しいプロキシ アカウント (New Proxy Account)] ダイアログ ボックスを使用します。 ここでは、[新しいプロキシ アカウント (New Proxy Account)] ダイアログ ボックスを使用します。

[全般 (General)] ページで、新しいプロキシ アカウントの名前と資格情報を指定します。 アカウントの名前を「Package proxy」とし、User1 という既存の資格情報を選択します。これには認証情報が格納されています。

ここで選択する資格情報は、パッケージを作成したアカウントまたは必要な権限を持つアカウントとして SQL Server エージェントがジョブを実行できるように、それに適したものである必要があります。

また、プロキシを有効にする対象のサブシステムも指定する必要があります。 ジョブがパッケージを実行するので、ここでは SQL Server Integration Services パッケージ (SQL Server Integration Services Package) サブシステムを選択します。

プロキシの説明はオプションです。

[プリンシパル (Principals)] ページでは、プロキシ アカウントへのアクセスを許可するロールの追加や削除を行えます。 sysadmin 固定サーバー ロールのメンバには、自動的にアクセスが許可されます。

プロキシ アカウント用に指定した User1 資格情報は、オブジェクト エクスプローラーの [資格情報 (Credentials)] ノードの下に表示されます。

Transact-SQL クエリを実行するか、[新しい資格情報 (New Credentials)] ダイアログ ボックスを使用すると、新しい資格情報を作成できます。

このビデオでは、SQL Server エージェントのジョブ ステップから呼び出したときにパッケージが実行されない問題のトラブルシューティング方法を説明しました。 具体的には、プロキシ アカウントを作成する手順、パッケージの ProtectionLevel プロパティ設定を変更する手順、機微なデータをパッケージの構成ファイルに保存する手順、および SQL Server msdb データベースにパッケージを格納する手順を確認しました。

ご覧くださいましてありがとうございました。 このビデオが皆様のお役に立ちましたら幸いです。Web サイトには Microsoft SQL Server に関する他のビデオもありますので、併せてご覧ください。