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