症状当从 SQL Server 代理程序作业步骤中调用一个 Microsoft SQL Server 2005 Integration Services (SSIS...当从 SQL Server 代理程序作业步骤中调用一个 Microsoft SQL Server 2005 Integration Services (SSIS) 包时, 不会运行 SSIS 包。 但是,如果您不要修改 SSIS 包,它将运行成功 SQL Server 代理之外。
原因
以下条件之一时会出现此问题:
用来运行该程序包在 SQL Server 代理该用户帐户不同于原始程序包作者。
用户帐户没有所需的权限,可连接或访问 SSIS 包之外的资源。
包可能无法运行在下列情况中:
当前用户无法从包解密机密信息。 如果当前帐户或执行帐户不同于在原的包作者软件包的 ProtectionLevel 属性设置不允许当前用户解密数据包中的秘密,可能发生这种情况。
使用集成的安全性的 SQL Server 连接失败,原因当前用户所需的权限。
文件访问失败,原因当前用户所需的权限写入连接管理器访问的文件共享。 例如,这种情况下可能出现与文本日志提供程序不使用登录名和密码。 这种情况下也会发生与文件连接管理器,如不是 SSIS 文件系统任务所依赖的任何任务。
在基于注册表的 SSIS 包配置使用 HKEY _ CURRENT _ USER 注册表项中。 HKEY _ CURRENT _ USER 注册表项是用户特定。
任务或连接管理器则要求当前用户帐户具有正确的权限。
解决方案
要解决此问题,请使用以下方法之一。 最合适的方法取决于环境和包失败的原因。
回到顶端
方法 1: 使用 SQL Server Agent 代理帐户
创建一个 SQL Server Agent 代理帐户。 此代理帐户必须使用允许 SQL Server 代理运行作业,以创建包的帐户或具有所需的权限的帐户的凭据。
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name=@jobname)
BEGIN
EXEC msdb.dbo.sp_delete_job @job_name=@jobname
EXEC msdb.dbo.sp_add_job @job_name = @jobname,@job_id = @jobid OUTPUT