文章編號: 918760 - 上次校閱: 2011年5月11日 - 版次: 2.0 從 SQL Server Agent 作業步驟呼叫 SSIS 封裝時,SSIS 封裝未執行
在此頁中徵狀當您從 SQL Server Agent 作業步驟呼叫 Microsoft SQL Server 2005
Integration Services (SSIS) 封裝時,SSIS 封裝未執行。不過,如果您沒有修改 SSIS 封裝,封裝將會在 SQL Server
Agent 外部成功執行。 發生的原因如果下列其中一種情況成立,就會發生這個問題:
解決方案如果要解決這個問題,請使用下列其中一個方法。最適合的方法需視環境以及封裝失敗的原因而定。 方法 1:使用 SQL Server Agent Proxy 帳戶建立 SQL Server Agent Proxy 帳戶。這個 Proxy 帳戶必須使用認證,讓 SQL Server Agent 像建立封裝的帳戶或具有必要權限的帳戶一樣執行作業。這個方法可用於解密並滿足使用者的金鑰需求。然而,這種方法的成功可能有限,因為 SSIS 封裝使用者金鑰包含目前使用者和目前電腦。因此,如果您將封裝移到另一台電腦,即使作業步驟使用正確的 Proxy 帳戶,這種方法仍然可能會失敗。 方法 2:將 SSIS 封裝 ProtectionLevel 屬性設定為 ServerStorage將 SSIS 封裝 ProtectionLevel 屬性變更為 ServerStorage。這個設定會透過 SQL Server 資料庫角色將封裝儲存在 SQL Server 資料庫中並允取存取控制。方法 3:將 SSIS 封裝 ProtectionLevel 屬性設定為 EncryptSensitiveWithPassword將 SSIS 封裝 ProtectionLevel 屬性變更為 EncryptSensitiveWithPassword。這個設定會使用密碼進行加密。然後您可以將 SQL Server Agent 作業步驟命令列修改為加入這個密碼。方法 4:使用 SSIS 封裝設定檔案使用 SSIS 封裝設定檔案來儲存機密資訊,然後將這些設定檔案儲存在受安全保護的資料夾中。接著您可以將 ProtectionLevel 屬性變更為 DontSaveSensitive,讓封裝不會加密也不會嘗試將機密儲存在封裝中。當您執行 SSIS 封裝時,會從設定檔案載入必要的資訊。如果設定檔案含有機密資訊,確定它們會受到適當的保護。方法 5:建立封裝範本如需長期的解決方案,請建立使用與預設設定不同保護等級的封裝範本。這個問題將不會發生在未來的封裝中。狀況說明
這是原本設計的做法, 其他相關資訊重現問題的步驟
以下列使用者的身分執行:DOMAIN\USERNAME。封裝執行失敗。步驟失敗。 解密封裝SSIS 封裝 ProtectionLevel 屬性的預設設定為 EncryptSensitiveWithUserKey。儲存封裝時,SSIS 只加密含有標示為「機密」的屬性的部分封裝,例如密碼、使用者名稱和連線字串。因此,當重新載入封裝時,目前的使用者必須滿足要解密的機密屬性的加密需求。然而,目前的使用者並不需要滿足載入封裝的加密需求。當您透過 SQL Server Agent 作業步驟執行封裝時,預設的帳戶是 SQL Server Agent 服務帳戶。這個預設帳戶很有可能是和封裝作者不同的使用者。因此,雖然 SQL Server Agent 作業步驟可以載入並啟動以執行作業步驟,但是封裝仍會失敗,因為它無法完成連線。例如,封裝無法完成 OLE DB 連線或 FTP 連線。封裝失敗是因為它無法解密必須連線的認證。重要 請考慮開發過程和環境,以判斷各電腦上有哪些需要及使用的帳戶。ProtectionLevel 屬性的 EncryptSensitiveWithUserKey 設定是一項功能強大的設定。您不得忽略這個設定,因為它會造成部署在開始時的複雜性。當您登入適當的帳戶時,可以加密封裝。您也可以透過 .cmd 檔案和 SQL Server Agent 命令子系統,使用 Dtutil.exe SSIS 命令列公用程式變更保護等級。例如,請依照下列步驟執行。由於您可以在批次檔和迴圈中使用 Dtutil.exe 公用程式,因此可以同時針對數個封裝執行這些步驟。
確定您具有關於 SSIS 封裝失敗的詳細錯誤資訊您可以使用 SSIS 記錄來確定您具有關於 SSIS 封裝失敗的錯誤資訊,而不需要依賴 SQL Server Agent 作業歷程記錄中有限的詳細資料。您也可以使用 exec 子系統命令代替 SSIS 子系統命令執行封裝。關於 SSIS 記錄SSIS 記錄和記錄提供者可讓您擷取關於封裝執行和失敗的詳細資料。根據預設,封裝不會記錄資訊。您必須設定封裝才能記錄資訊。當您設定封裝以記錄資訊時,會看到類似下列的詳細資訊。在這個情況中,您會知道這是有關權限的問題:OnError,DOMAINNAME,DOMAINNAME\USERNAME,FTP 工作,{C73DE41C-D0A6-450A-BB94-DF6D913797A1},{2F0AF5AF-2FFD-4928-88EE-1B58EB431D74},4/28/2006 1:51:59 PM,4/28/2006 1:51:59 PM,-1073573489,0x,無法使用 "FTP 連接管理員" 連接 FTP 伺服器。 OnError,DOMAINNAME,DOMAINNAME\USERNAME,執行 SQL 工作,{C6C7286D-57D4-4490-B12D-AC9867AE5762},{F5761A49-F2F9-4575-9E2B-B3D381D6E1F3},4/28/2006 4:07:00 PM,4/28/2006 4:07:00 PM,-1073573396,0x,無法取得連接 "user01.msdb"。連接可能未正確設定,或您沒有這個連接的正確權限。 關於 exec 子系統命令和輸出資訊利用 exec 子系統命令方法,您會在 SSIS 命令列中加入詳細資訊主控台記錄參數,以呼叫 Dtexec.exe SSIS 命令列執行檔。此外,您會使用輸出檔案的進階作業功能。您也可以使用 [包含步驟輸出於歷程記錄中] 選項,將記錄資訊重新導向至檔案或 SQL Server Agent 作業歷程記錄。下列是命令列的範例: dtexec.exe /FILE "C:\_work\SSISPackages\ProtectionLevelTest\ProtectionLevelTest\AgentTesting.dtsx" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING V /CONSOLELOG NCOSGXMT /console 記錄會傳回類似下列的詳細資料: 錯誤:2006-04-27 18:13:34.76 代碼:0xC0202009 來源:AgentTesting 連接管理員 "(local).msdb" 描述:發生 OLE DB 錯誤。錯誤碼: 0x80040E4D。 有 OLE DB 記錄可用。來源:"Microsoft SQL Native Client" Hresult:0x80040E4D 描述:"使用者 'DOMAINNAME\username' 的登入失敗"。 錯誤結束 錯誤:2006-04-28 13:51:59.19 代碼:0xC0016016 來源: 描述:無法將保護的 XML 節點 "DTS:Property" 解密,錯誤為 0x80070002 "系統找不到指定的檔案"。您可能沒有存取這項資訊的權限。當發生密碼編譯錯誤時,就會發生這個錯誤。請確認有正確的金鑰。 錯誤結束 記錄:
名稱:OnError
電腦:COMPUTERNAME
操作員:DOMAINNAME\username
來源名稱:執行 SQL 工作
來源 GUID:{C6C7286D-57D4-4490-B12D-AC9867AE5762}
執行 GUID:{7AFE3D9E-5F73-42F0-86FE-5EFE264119C8}
訊息:無法取得連接 "(local).msdb"。連接可能未正確設定,或您沒有這個連接的正確權限。
開始時間:2006-04-27 18:13:34
結束時間:2006-04-27 18:13:34
記錄結束
?考
如需有關類似問題的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件: 904800?
(http://support.microsoft.com/kb/904800/
)
嘗試在 SQL Server 2005 中執行 SQL Server 2005 Integration Services 封裝時,收到「錯誤載入」錯誤訊息
如需有關如何在批次作業中使用
Dtutil.exe 公用程式的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:906562?
(http://support.microsoft.com/kb/906562/
)
如何使用 dtutil 公用程式 (Dtutil.exe) 在 SQL Server 2005 中設定一批 SQL Server Integration Services (SSIS) 封裝的保護等級
如需有關如何建立封裝範本的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:908018?
(http://support.microsoft.com/kb/908018/
)
如何在 SQL Server Business Intelligence Development Studio 中建立封裝範本
如需有關 SSIS 封裝安全性和 ProtectionLevel 屬性的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的「Integration Services 的安全性考量」主題。 可惜,使用者沒注意到預設代理程式作業步驟設定會使他們處於這種狀態。如需有關 SQL Server Agent Proxy 和 SSIS 的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的下列主題:
這篇文章中的資訊適用於:
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯 |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
回此頁最上方
