KB2216489 - 修正: Dataflow タスクで SQL Server Destination コンポーネントを含む SSIS パッケージを実行しようとするとエラー メッセージが表示される

適用先
Windows 7 Windows Vista SQL Server Management Studio SQL Server 2008 R2 SQL Server 2008 R2 Service Pack 1

現象

たとえば次のようなシナリオを考えてみます。

  • データフロー タスクに SQL Server Destination コンポーネントが含まれる SQL Server 2008 Integration Services R2 (SSIS) パッケージを作成します。

  • ユーザー アカウント制御 (UAC) が有効になっているシステム (Windows Vista や Windows 7 など) でこのパッケージを実行するには、次のいずれかの方法を使用します。

    • Business Intelligence Development Studio (BIDS)
    • SQL Server Management Studio (SSMS) オブジェクト エクスプローラー
    • DTExec.exe
    • DTExecUI.exe

この場合に、次のようなエラー メッセージが表示されることがあります。

注

[SQL Server Destination] エラー: データ挿入用の SSIS 一括挿入を準備できません。

[SSIS.Pipeline] エラー: コンポーネント "SQL Server Destination" がプレ実行フェーズに失敗し、エラー コード 0xC0202071." が返されました。

データを一括コピーできません。 このパッケージは管理者として実行する必要がある場合があります。

メモ

  • オペレーティング システムのインストール中に作成された組み込みの管理者アカウントでパッケージを実行した場合、これらのエラーは発生しません。 ただし、このメッセージは、ローカル管理者グループのメンバーを含む他のユーザーに対して表示されます。
  • この問題は、同じ SSIS パッケージを SQL Server エージェント ジョブとして実行する場合には発生しません。
  • 2 番目のエラー メッセージは、SQL 2008 Service Pack 2 (SP2) をインストールした後にのみ生成されます。

原因

この問題は、UAC が有効になっているシステムで発生します。 Administrators グループのメンバーであるアカウントによってアプリケーション (SSIS など) を起動すると、低アクセス許可トークンと管理者特権アクセス許可トークンの 2 つのセキュリティ トークンを受け取ります。 管理者特権のトークンは、[ 管理者として実行 ] オプションを使用してアプリケーションが管理者アカウントで明示的に実行された場合にのみ使用されます。 既定では、SSIS では常に低アクセス許可のトークンが使用されます。これにより、SSIS が SQL Server の宛先コンポーネントに接続するときにエラーが発生します。

注: ローカルの Administrators グループのメンバーではないアカウントを使用している場合、UAC は表示されません。

解決策

SQL Server 2008 R2 の Service Pack の情報

この問題を解決するには、SQL Server 2008 R2 の最新の Service Pack を入手します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2527041 SQL Server 2008 R2 の最新の Service Pack を入手する方法

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
この問題は、SQL Server 2008 R2 for SQL Server 2008 R2 Service Pack 1 で初めて修正されました。

回避策

この問題を回避するには、次のいずれかの方法を使用します。

  • SSMS、BIDS、または DTExecUI.exe からパッケージを実行している場合は、管理者アカウントからこれらのツールを起動します。 これを行うには、[スタート] ボタンをクリックし、[すべてのプログラム]、[SQL Server 2005 または SQL Server 2008] の順にポイントし、使用中のツールを右クリックして、[管理者として実行] をクリックします。 これにより、組み込みの Administrator アカウントの昇格されたアクセス許可を使用してアプリケーションが起動し、パッケージが正常に実行されます。

    同様に、DTExec.exe を使用してパッケージを実行している場合は、管理者特権のコマンド プロンプトから起動します。 これを行うには、[ スタート]、[ すべてのプログラム]、[ アクセサリ]、[ コマンド プロンプト] の右クリック、[ 管理者として実行] の順にクリックします。

    注: 管理者としてログオンしていない場合は、管理者アカウントを入力するように求められます。 これに応じて、[ ユーザー アカウント制御 ] ダイアログ ボックスに管理者のユーザー名とパスワードを入力し、[ OK] をクリックします。

  • 失敗しているデータフロー タスク内の SQL Server 宛先コンポーネントを、同じ SQL Server 接続マネージャーを指す OLE DB 宛先コンポーネントに置き換えます。

  • グローバル オブジェクトの作成 アクセス許可を割り当てた後は、ローカルの Administrators グループのメンバーではないアカウントを使用します。

    手順は次のとおりです。

    1. [ スタート] をクリックし、[ 管理ツール] をポイントして、[ローカル セキュリティ ポリシー] をクリックします。
    2. [ローカル ポリシー] を展開し、[ユーザー権利の割り当て] をクリックします。
    3. 詳細ウィンドウで、[ グローバル オブジェクトの作成] をダブルクリックします。
    4. [ ローカル セキュリティ ポリシーの設定 ] ダイアログ ボックスで、[ 追加] をクリックします。
    5. [ ユーザーまたはグループの選択 ] ダイアログ ボックスで、追加するユーザー アカウントをクリックし、[ 追加] をクリックして、[ OK ] を 2 回クリックします。