1

当我将包作为 SQL Server 代理作业执行时,出现以下错误。

它是在 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.
4

2 回答 2

2

作为一般准则,将包作为作业步骤运行的帐户必须具有与直接运行包的帐户相同的权限,才能访问包需要访问的任何外部资源。

如果包存储在 MSDB 数据库中,并且您已将保护级别设置为依赖服务器存储和角色进行访问控制,则数据库角色现在控制对包的读取和写入访问权限。

您需要将 Integration Services 固定数据库级别角色之一或用户定义的数据库级别角色分配给包的 Reader 角色。SQL Server 2008 中固定的数据库级角色是 db_ssisadmin、db_ssisoperator 和 db_ssisltduser。

如果您将固定的数据库级角色分配给包,则从作业步骤调用包的用户帐户必须是该角色的成员。如果您将用户定义的角色分配给包,则用户帐户必须是固定数据库级别角色之一的成员和用户定义角色的成员。还要检查从 Sql Job 运行 SSIS 包的权限问题

或者,您可以

我确实遇到了同样的问题,我的问题通过以下步骤解决了 -

  1. 在 SQLServer2005MSSQLUser$ComputerName$MSSQLSERVER windows Group 中添加 SQL Server 服务帐户
  2. 在 SQLServer2005SQLAgentUser$ComputerName$MSSQLSERVER windows Group 添加 SQL Server 服务帐户
  3. 重启你的服务器
于 2013-06-20T06:30:55.370 回答
2

除了SQL.Net Warrior 的回答之外,还有另一种选择:

  1. 在 SSMS 中(在安全性下)添加一个新的凭据,并输入具有包所需权限的域或本地用户,以及该用户的密码。这将采用DOMAIN\USER或形式SYSTEMNAME\USER

  2. 在 SQL Server 代理 -> 代理下,添加一个新代理。检查子系统“SQL Server Integration Services Package”,并输入您在步骤 1 中创建的凭据的名称。

  3. 现在,在运行 SSIS 包的作业步骤中,“运行方式”下拉列表中将有一个新条目,其中包含您创建的代理的名称。

  4. 选择代理,保存,您的作业步骤现在将以用户身份运行,并且成功!

请注意,在凭据设置中,有一个选项可以选择加密提供程序(它本身似乎需要一些特殊的安装/设置)。我没有对此进行研究以完全理解它,但我怀疑它是为了安全地存储密码。在继续使用此方法之前,您应该自己研究并理解它 - 只是为了了解有关密码的任何潜在安全问题。

于 2013-06-20T07:05:13.123 回答