2013-06-19 134 views
0

當我將包作爲SQL服務器代理作業執行時,出現以下錯誤。SQL服務器代理SSIS錯誤

它是在SQL Server 2008實例上運行的SSIS 2008程序包。我的軟件包安全性是DontSaveSensitive。

我甚至不知道如何開始修復這個錯誤。

我應該在哪裏檢查?

Date  a value of time 
Log  Job History (MyJob) 

Step ID  1 
Server  PCTSQL004 
Job Name  MyJob 
Step Name  Job_1 
Duration  00:00:00 
Sql Severity  0 
Sql Message ID  0 
Operator Emailed   
Operator Net sent  
Operator Paged  
Retries Attempted  0 

Message 
Executed as user: CS\DmcSysManager. The process could not be created for step 1 of job 0x63BB5A86DB23F947866D2A806BE4CC6B (reason: A required privilege is not held by the client). The step failed. 
+0

- >「所需的特權不由客戶端持有」如果沒有看到包的定義,這可能是很多事情。 –

+0

@MitchWheat - 我怎麼能給你這些信息?請告訴我,我會得到它。 – gregnorm

回答

2

除了SQL.Net Warrior's answer還有另一種選擇:

  1. 添加在SSMS(安全下)的新證書,並輸入具有由所需的權限的域或本地用戶包,以及此用戶的密碼。這將採用DOMAIN\USERSYSTEMNAME\USER的形式。

  2. 在SQL Server代理 - >代理下,添加一個新的代理。檢查子系統「SQL Server集成服務包」,並輸入在步驟1中創建的憑證的名稱。

  3. 現在,在運行SSIS包的工作步驟中,將會有一個新的條目「運行身份」下拉列表中包含您創建的代理的名稱。

  4. 選擇代理,保存,您的工作步驟現在將作爲用戶運行,併成功!

請注意,在憑據設置中,有一個選項用於選擇加密提供程序(本身似乎需要一些特殊的安裝/設置)。我還沒有研究這個來充分理解它,但我懷疑它是安全地存儲密碼。在繼續使用這種方法之前,您應該自己研究並理解它 - 只是爲了瞭解密碼周圍任何潛在的安全問題。

2

作爲一般原則,在運行包作爲作業步驟必須擁有所有相同的權限直接運行該包的帳戶,以便訪問該包需要訪問的任何外部資源的帳戶。

如果軟件包存儲在MSDB數據庫中,並且已將保護級別設置爲依賴服務器存儲和角色進行訪問控制,則數據庫角色現在控制對該軟件包的讀取和寫入訪問。

您需要將一個Integration Services固定數據庫級角色或一個用戶定義的數據庫級角色分配給該軟件包的Reader角色。 SQL Server 2008中固定的數據庫級角色是db_ssisadmin,db_ssisoperator和db_ssisltduser。

如果將固定的數據庫級角色分配給程序包,則從作業步驟調用程序包的用戶帳戶必須是該角色的成員。如果將用戶定義的角色分配給包,則用戶帳戶必須是固定數據庫級角色之一的成員,並且是用戶定義角色的成員。 還要檢查Permissions Issue running SSIS package from Sql Job

或者,您可以

我也面臨着同樣的問題,我的問題是用下面的步驟來解決 -

  1. 添加SQL Server服務帳戶在SQLServer2005MSSQLUser $計算機名$ MSSQLSERVER窗口組
  2. 在SQLServer2005SQLAgentUser $ ComputerName $ MSSQLSERVER窗口組添加SQL Server服務帳戶組
  3. 重新啓動服務器