2013-06-19 119 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. 重新启动服务器