無法準備 SSIS 大量插入,以在啟用 UAC 的系統上插入數據
本文可協助您解決當您嘗試在啟用用戶帳戶控制 (UAC) 的系統上執行 SSIS 套件時所發生的問題。
原始產品版本:SQL Server
原始 KB 編號: 2009672
徵兆
請參考下列案例:
您可以建立 SQL Server Integration Services (SSIS) 套件,其具有數據流工作內的 SQL Server 目的地元件。
您嘗試在啟用使用者帳戶控制 (UAC) 的系統上執行此套件(例如 Vista 或 Windows 7),方法是使用下列其中一種方法:
- Business Intelligence Development Studio (BIDS)
- SQL Server Management Studio (SSMS) 物件總管
- DTExec.exe
- DTExecUI.exe
在此案例中,您可能會收到類似下列的錯誤訊息:
SQL Server 目的地] 錯誤:無法準備 SSIS 大量插入以進行數據插入。 [SSIS.管線] 錯誤:元件 「SQL Server 目的地」 無法執行前階段,並傳回錯誤碼0xC0202071。
注意
如果您在操作系統安裝期間建立的 Builtin Administrator 帳戶下執行套件,則不會收到此錯誤。 但您會收到此訊息給任何其他使用者,包括屬於本機系統管理員群組成員的使用者。
當您執行與 SQL Server Agent 作業相同的 SSIS 套件時,不會發生此問題。
安裝 SQL 2008 Service Pack 2 之後,錯誤 DTS_E_BULKINSERTAPIPREPARATIONFAILED (0xC0202071) 的文字已變更為: 無法大量複製數據。您可能需要以系統管理員身分執行此套件。
這項變更是為了讓您更輕鬆地瞭解所需的更正動作,如此 KB 的解決一節所述。
原因
在啟用 UAC 的系統上,當應用程式(例如 SSIS)由屬於 Administrators 群組成員的帳戶啟動時,它會取得兩個安全性令牌,一個是低許可權令牌,另一個是提高許可權的令牌。 只有在應用程式藉由選擇 [以系統管理員 身分執行] 選項,明確地在系統管理員帳戶下執行時,才會使用提高許可權的令牌。 根據預設,SSIS 一律會使用低許可權令牌,導致連線到 SQL 目的地時失敗。
解決方法
使用下列其中一種方法來解決此問題:
如果您是從 SQL Server Management Studio (SSMS) 或 Business Intelligence Development Studio (BIDS) 或 DTExecUI.exe 執行套件,請在提高許可權的系統管理員帳戶下啟動這些工具。 若要這樣做,請按兩下 [開始]、指向 [所有程式]、指向 [SQL Server 2005 ] 或 [SQL Server 2008],以滑鼠右鍵按下您使用的工具,然後按兩下 [ 以系統管理員身分執行]。 這會啟動具有內建系統管理員帳戶較高許可權的應用程式,且套件會順利執行。
同樣地,如果您使用 DTExec.exe從提升許可權的命令提示字元啟動封裝。 您可以按兩下 [開始]、按兩下 [所有程式]、[附屬程式]、以滑鼠右鍵按兩下 [命令提示字元],然後按兩下 [以系統管理員身分執行],以啟動提升許可權的命令提示字元。
注意
如果您未以系統管理員身分登入計算機,系統會提示您提供系統管理員帳戶。 當系統提示您提供系統管理員帳戶時,請在 [使用者帳戶控制] 對話框中輸入系統管理員使用者名稱和密碼。 然後按一下 [確定]。
以指向相同 SQL Server 連接管理員的 OLE DB 目的地元件取代數據流工作中的 SQL Server 目的地元件。
將建立全域對象用戶權力指派給該帳戶之後,請使用不是本機 Administrators 群組成員的帳戶。 若要這樣做,請遵循下列步驟:
- 按兩下 [開始],指向 [ 系統管理工具],然後按兩下 [ 本機安全策略]。
- 展開 [ 本機原則],然後按兩下 [ 用戶權力指派]。
- 在右窗格中,按兩下 [ 建立全域物件]。
- 在 [ 本機安全策略設定 ] 對話框中,按兩下 [ 新增]。
- 在 [ 選取使用者 或 群組 ] 對話框中,按兩下您要新增的用戶帳戶,按兩下 [新增],然後按兩下 [ 確定]。
- 按一下 [確定]。
注意
使用不是本機 Administrators 群組成員的帳戶時,UAC 不會生效。