SQL Server 2005创建作业执行SSIS包失败,请教高手

zhuenlai 2009-02-12 11:16:11
高手们
请指教
我用SQL Server 代理创建作业执行SSIS包总是执行不成功,是怎么回事啊?
SSIS包在其它地方执行正常。
...全文
1803 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
emmylee001 2011-07-29
  • 打赏
  • 举报
回复
我打算建一个sql server agent代理帐户。我的ssis包近段时间老是出问题。我是执行ssis包。
Aaron_Liu001 2009-08-12
  • 打赏
  • 举报
回复
1
csdnhbgjh 2009-04-17
  • 打赏
  • 举报
回复
当从 SQL Server 代理程序作业步骤中调用 SSIS 包时,不运行 SSIS 包

症状当从 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 代理运行作业,以创建包的帐户或具有所需的权限的帐户的凭据。

此方法来解密密钥的工作并满足用户的密钥需求。 但是,此方法可能有限成功因为 SSIS 包用户密钥涉及当前用户并在当前计算机。 因此,如果在将包移动到另一台计算机时,此方法可能仍然无法,即使作业步骤使用正确的代理帐户。
回到顶端
方法 2: 将 SSIS 包 ProtectionLevel 属性设置为 ServerStorage
将 SSIS 包 ProtectionLevel 属性更改 ServerStorage。 此设置将存储在 SQL Server 数据库中包并允许通过 SQL Server 数据库角色的访问控制。
回到顶端
方法 3: 将 SSIS 包 ProtectionLevel 属性设置为 EncryptSensitiveWithPassword
将 SSIS 包 ProtectionLevel 属性更改 EncryptSensitiveWithPassword。 此设置使用用于加密的密码。 然后可以修改 SQL Server 代理程序作业步骤命令行将此密码。
方法 4: 使用 SSIS 包的配置文件
使用 SSIS 包的配置文件来存储敏感的信息,然后将这些配置文件存储在安全文件夹中。 包未加密,从而不会尝试将秘密保存到该程序包,您可以然后更改到 DontSaveSensitive ProtectionLevel 属性。 如果您在中运行,SSIS 程序包从配置文件中加载所需的信息。 请确保将包含敏感信息都充分保护配置文件。
方法 5: 创建包模板
获得长期的解决办法创建一个包模板使用不同于默认设置的保护级别。 此问题不会在将来的包。
孤独侠客123 2009-02-13
  • 打赏
  • 举报
回复
那你的sql server 的服务的帐号是哪个

zhuenlai 2009-02-13
  • 打赏
  • 举报
回复
LENOVO-48507C6A,这是我主机名字,我想应该是sa把.我点击SQL Server Managment Studio时直接点连接进入的
zhuenlai 2009-02-12
  • 打赏
  • 举报
回复
提示服务登陆失败


zhuenlai 2009-02-12
  • 打赏
  • 举报
回复
lonely7345您好
我修改后sql server agent 不能启动了,
怎么回事啊
孤独侠客123 2009-02-12
  • 打赏
  • 举报
回复
控制面板--管理工具--服务

找到sql server agent

右击,属性,里面有登录


修改为你的administrator ,输入密码..

确认,重新启动服务
zhuenlai 2009-02-12
  • 打赏
  • 举报
回复
怎样修改啊
我是菜了
fcuandy 2009-02-12
  • 打赏
  • 举报
回复
同上,估计是访问了网络资源。

agent服务默认是本地系统帐户无法访问网络资源, 可以改成admimistrator或其它具有相应权限的成员。
孤独侠客123 2009-02-12
  • 打赏
  • 举报
回复
修改系统服务sql server agent 的登陆用户,修改成系统管理员administrator
dawugui 2009-02-12
  • 打赏
  • 举报
回复
再参考:

Sql2005如何用dtexec运行ssis(DTS)包

一、首先在Business Intelligence中设计好包,并调试通过。

  二、选用dtexec工具运行包


  (一) 打开 xp_cmdshell 选项

  SQL Server 2005 中引入的 xp_cmdshell 选项是服务器配置选项,使系统管理员能够控制是否可以在系统上执行 xp_cmdshell 扩展存储过程。默认情况下,xp_cmdshell 选项在新安装的软件上处于禁用状态,但是可以通过使用外围应用配置器工具或运行 sp_configure 系统存储过程来启用它,如下面的代码示例所示:


To allow advanced options to be changed.

EXEC sp_configure 'show advanced options', 1 GO –


To update the currently configured value for advanced options. RECONFIGURE GO -- To enable the feature.


EXEC sp_configure 'xp_cmdshell', 1 GO – Chinaz^com

To update the currently configured value for this feature. RECONFIGURE GO


  (二) 利用dtexec 实用工具执行包

  方式一:直接通过允许ssis文件执行

  使用如下命令 :xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"


  方式二: 先将包导入sql 2005在执行


  1)导入包

  SQL2005打开Managemenet Studio,选择接Integration Services服务,选择“已存储的包”-”MSDB“,右键导入包,选择文件系统,指定用Business Intelligence Development Studio做好的包,选择导入


  注意:保护级别选项中需要选择依靠服务器存储和角色进行访问控制


  否则通过dtexec 运行包时会报错-说明: 无法解密受保护的 XML 节点“DTS:Password”,错误为 0x8009000B“该项不适于在指定状态下使用。”。可能您无权访问此信息。当发生加密错误时会出现此错误。请确保提供正确的密钥。

  2) 导入完成后可在Managemenet Studio中执行语句

  xp_cmdshell 'dtexec /DTS "\MSDB\wangluo" /SERVER "XXW2006_1" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING V '

dawugui 2009-02-12
  • 打赏
  • 举报
回复
参考:

--功能概述:定义创建作业
--做成时间:2008/09/25
(http://topic.csdn.net/u/20081209/14/00568bc9-442a-49e3-84d8-108ebf991ddb.html?seed=2120734022)
DECLARE @jobid uniqueidentifier, @jobname sysname
SET @jobname = N'作业名称'

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

--定义作业步骤
DECLARE @sql nvarchar(4000),@dbname sysname
SELECT @dbname=DB_NAME(), --作业步骤在当前数据库中执行
@sql=N'--作业步骤内容' --一般定义的是使用TSQL处理的作业,这里定义要执行的Transact-SQL语句
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'作业步骤名称',
@subsystem = 'TSQL', --步骤的类型,一般为TSQL
@database_name=@dbname,
@command = @sql

--创建调度(使用后面专门定义的几种作业调度模板)
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'调度名称',
@freq_type=4, --每天
@freq_interval=1, --指定每多少天发生一次,这里是1天.
@freq_subday_type=0x8, --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
@freq_subday_interval=1, --重复周期数,这里每小时执行一次
@active_start_date = NULL, --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
@active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD
@active_start_time = 00000, --作业执行的开始时间,格式为HHMMSS
@active_end_time = 235959 --作业执行的停止时间,格式为HHMMSS
END
jasonren 2009-02-12
  • 打赏
  • 举报
回复
贴一下报错的信息

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧