UAC 対応システムでデータ挿入用の SSIS 一括挿入を準備できない
この記事は、ユーザー アカウント制御 (UAC) が有効になっているシステムで SSIS パッケージを実行しようとしたときに発生する問題を解決するのに役立ちます。
元の製品バージョン: SQL Server
元の KB 番号: 2009672
現象
次のような状況で問題が発生します。
SQL Server Integration Services (SSIS) パッケージを作成します。このパッケージには、データフロー タスク内に SQL Server Destination コンポーネントがあります。
次のいずれかの方法を使用して、ユーザー アカウント制御 (UAC) が有効になっているシステム (Vista や Windows 7 など) でこのパッケージを実行しようとするとします。
- ビジネス インテリジェンス開発スタジオ (BIDS)
- SQL Server Management Studio (SSMS) オブジェクト エクスプローラー
- DTExec.exe
- DTExecUI.exe
このシナリオでは、次のようなエラー メッセージが表示される場合があります。
SQL Server目的地]エラー: データ挿入用に SSIS 一括挿入を準備できません。 [SSIS。パイプライン] エラー: コンポーネント "SQL Server Destination" が実行前フェーズに失敗し、エラー コード 0xC0202071が返されました。
注:
オペレーティング システムのインストール中に作成される組み込み管理者アカウントでパッケージを実行した場合、このエラーは発生しません。 ただし、ローカル管理者グループのメンバーであるユーザーを含め、他のすべてのユーザーに対してこのメッセージが表示されます。
この問題は、SQL Server エージェント ジョブと同じ SSIS パッケージを実行しても発生しません。
SQL 2008 Service Pack 2 がインストールされた後、エラー DTS_E_BULKINSERTAPIPREPARATIONFAILED (0xC0202071) のテキストが に変更されました。 データを一括コピーできません。このパッケージを管理者として実行する必要がある場合があります。
この変更は、この KB の「解決」セクションで説明されているように、必要な修正アクションを理解しやすくするために行われました。
原因
UAC が有効になっているシステムでは、Administrators グループのメンバーであるアカウントによってアプリケーション (SSIS など) が起動されると、2 つのセキュリティ トークン (低い特権トークンと昇格されたトークン) が取得されます。 管理者特権トークンは、[管理者として実行] オプションを選択して、アプリケーションが管理者アカウントで明示的に 実行 されている場合にのみ使用されます。 既定では、SSIS では常に低い特権トークンが使用され、SQL Destination に接続するときにエラーが発生します。
解決方法
問題を回避するには、次のいずれかの方法を使用します。
SQL Server Management Studio (SSMS) または Business Intelligence Development Studio (BIDS) または DTExecUI.exe からパッケージを実行している場合は、管理者特権の管理者アカウントでこれらのツールを起動します。 これを行うには、[スタート] をクリックし、[すべてのプログラム] をポイントし、[SQL Server 2005] または [SQL Server 2008] をポイントし、使用しているツールを右クリックし、[管理者として実行] をクリックします。 これにより、組み込み管理者アカウントの管理者特権でアプリケーションが起動され、パッケージが正常に実行されます。
同様に、DTExec.exe を使用してパッケージを実行している場合は、管理者特権のコマンド プロンプトから起動します。 管理者特権のコマンド プロンプトを開始するには、[スタート] をクリックし、[すべてのプログラム]、[アクセサリ] の順にクリックし、[コマンド プロンプト] を右クリックして、[管理者として実行] をクリックします。
注:
コンピューターに管理者としてログオンしない場合は、管理者アカウントを指定するように求められます。 管理者アカウントの入力を求められたら、[ ユーザー アカウント制御 ] ダイアログ ボックスに管理者ユーザー名とパスワードを入力します。 次に、[OK] をクリックします。
失敗しているデータフロー タスクのSQL Server変換先コンポーネントを、同じSQL Server接続マネージャーを指す OLE DB 変換先コンポーネントで置き換えます。
グローバル オブジェクトの作成ユーザー権限をそのアカウントに割り当てた後、ローカル Administrators グループのメンバーではないアカウントを使用します。 これを行うには、次の手順を実行します。
- [ スタート] をクリックし、[ 管理ツール] をポイントし、[ ローカル セキュリティ ポリシー] をクリックします。
- [ ローカル ポリシー] を展開し、[ ユーザー権利の割り当て] をクリックします。
- 右側のウィンドウで、[ グローバル オブジェクトの作成] をダブルクリックします。
- [ ローカル セキュリティ ポリシー設定 ] ダイアログ ボックスで、[ 追加] をクリックします。
- [ユーザーまたはグループの選択] ダイアログ ボックスで、追加するユーザー アカウントをクリックし、[追加] をクリックし、[OK] をクリックします。
- [OK] をクリックします。
注:
ローカル管理者グループのメンバーではないアカウントを使用する場合、UAC は機能しません。