SSIS(使用dtexec命令调用SSIS包中出错)

icecar 2010-05-22 02:07:53
我创建了一个简单的包,有一个变量[user::rq],使用下面的语句执行包是成功的:
EXEC xp_cmdshell 'dtexec /f "C:\cwk.dtsx" /Decrypt "123"'

但是当我想通过SET命令修改包里面的变量时,使用如下语句就报错了:
(说明: 配置条目“\cwk.variables[user::rq].Value”的格式不正确,没有以包分隔符开头。请将 "\package" 置于包路径之前。)
EXEC xp_cmdshell 'dtexec /f "C:\cwk.dtsx" /SET \cwk.variables[user::rq].Value;"2004-01-31" /Decrypt "123" '
...全文
1907 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
icecar 2010-05-24
  • 打赏
  • 举报
回复
谢谢10楼的高手,现在成功了。
针对这个问题,我做个总结吧,问题的原因就在于Variables[User::rq]这里,之前我把User给写成了user,就是这一个字母大小写造成的。虽然微软体系除了密码外很少区分大小写,但是在这里,标识用户名变量的User是必须的格式,写成USER或者user都是会失败的。
Garnett_KG 2010-05-24
  • 打赏
  • 举报
回复
try:

EXEC xp_cmdshell 'dtexec /f "C:\cwk.dtsx" /SET \Package.Variables[User::rq].Value;"2004-01-31" /Decrypt "123" '
icecar 2010-05-24
  • 打赏
  • 举报
回复
谢谢8楼的朋友,不过还是不行呢
EXEC xp_cmdshell 'dtexec /f "C:\cwk.dtsx" /SET "\cwk.variables[user::rq].Value";2004-01-31 /Decrypt "123" '
说明: 配置条目“\cwk.variables[user::rq].Value”的格式不正确,没有以包分隔符开头。请将 "\package" 置于包路径之前。

EXEC xp_cmdshell 'dtexec /f "C:\cwk.dtsx" /SET "\cwk.variables[user::rq].Value";"2004-01-31" /Decrypt "123" '
说明: 配置条目“\cwk.variables[user::rq].Value”的格式不正确,没有以包分隔符开头。请将 "\package" 置于包路径之前。
csw200201 2010-05-23
  • 打赏
  • 举报
回复
Try
EXEC xp_cmdshell 'dtexec /f "C:\cwk.dtsx" /SET "\cwk.variables[user::rq].Value";2004-01-31 /Decrypt "123" '

or

EXEC xp_cmdshell 'dtexec /f "C:\cwk.dtsx" /SET "\cwk.variables[user::rq].Value";"2004-01-31" /Decrypt "123" '
aidajia 2010-05-23
  • 打赏
  • 举报
回复
没用过,帮顶。
永生天地 2010-05-22
  • 打赏
  • 举报
回复
两种:
1、
维护计划自动备份数据库作业执行失败,会自动生成abc82作业 收藏 
帖子原址

错误提示:

情况1、前正常的通过维护计划进行的数据库备份作业执行失败,并生成以下错误提示:

已以用户 XXX-999\SYSTEM 的身份执行。 Microsoft (R) SQL Server 执行包实用工具 版本 9.00.3042.00 (32 位) 版权所有 (C) Microsoft Corp 1984-2005。保留所有权利。 开始时间: 14:14:19 警告: 2010-03-19 14:14:20.17 代码: 0x80012017 源: USER_DBPlan 说明: 包路径引用了找不到的对象:“\Package\Subplan_1.Disable”。在尝试解析找不到的对象的包路径时,会出现此情况。 警告结束 DTExec: 无法将 \Package\Subplan_1.Disable 值设置为 false。 开始时间: 14:14:19 完成时间: 14:14:20 已用时间: 0.844 秒. 包执行失败。. 该步骤失败。

情况2、且不定时自动生成了名为abc82的作业。

情况3、且连接数据库类型为Integration Services时显示如下错误

无法连接到XXX-999
与计算机“XXX-999”上的SSIS服务连接失败,库没有注册。

情况4、 新建维护计划时(不是维护计划向导),显示如下错误:

调用目标发生异常(mscorlib)
无法将类型为“Microsoft.SqlServer.Dts.Runtime.Wrapper.PackageNeutralClass”的 COM 对象强制转换为接口类型“Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSContainer90”。此操作失败的原因是对 IID 为“{8BDFE892-E9D8-4D23-9739-DA807BCDC2AC}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
原因:

情况1得原因来自情况2,情况2得原因来自情况3.

此情况还会导致新建作业不能新建步骤。

维护计划执行需要SSIS运行时对象,这个对象需要装好SP1补丁后自动注册DTS.DLL文件。但是如果直接装SP2或其他操作可能会导致该注册失效。

解决办法:


重新注册 DTS.dll 即可。
找到 SqlServer 2005 安装目录(如 C:\Program Files\Microsoft SQL Server\90\DTS\Binn\),执行
regsvr32.exe C:\Program Files\Microsoft SQL Server\90\DTS\Binn\dts.dll

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ClsData/archive/2010/03/23/5409890.aspx


2、微软的解释

症状

考虑以下情形:
在 Microsoft SQL Server 2008,您可以使用 DTExec.exe 或 DTExecUi.exe 实用程序运行 SQL Server Integration Services (SSIS) 包。
通过使用指定配置文件在 / ConfigFile 选项运行 DTExec.exe 或 DTExecUi.exe 实用程序时。
配置文件中包含许多配置为在包中的对象。然而,在配置文件中引用的对象的路径不存在当前包中。例如对于您使用共享的配置文件的多个程序包。但是,一些变量、 连接管理器、 任务,或共享的配置文件中引用其他对象中不包含所有包。
在这种情况下运行命令时您将收到以下错误消息:
代码: 0x80012017
源: 包
描述: 包路径引用无法找到的对象:"Path"。当试图解析为一个对象,找不到该对象的包路径时,会出现这种情况。

DTExec: 可能不导入配置文件 Configuration File。

此外,如果当您设计了 SSIS 包而不用指定共享的商业智能设计 Studio (BIDS) 中指定共享的配置文件配置文件使用了 / ConfigFile 选项,包可以成功运行。SupressConfigurationWarnings 包设置不会影响此问题。

注意在 $ SQL Server 2005 集成服务中不会发生此问题。在 SQL Server 2005 集成服务中,命令提供警告消息,按预期的无效值。然而,该命令可以成功运行。



解决方案

累积更新 4 SQL Server 2008 Service Pack 1 中第一次释放此问题的修复程序。有关此累积更新包的详细信息,请单击下面的文章编号,以查...累积更新 4 SQL Server 2008 Service Pack 1 中第一次释放此问题的修复程序。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
973602 (http://support.microsoft.com/kb/973602/LN/ ) 累积更新包 4 为 SQL Server 2008 Service Pack 1
注意因为这些版本是累积性的因此每个新的修补程序版本包含的所有修补程序和所有安全修复程序以前 SQL Server 2008 中包含的修补都程序版本。Microsoft 建议您考虑应用最新的修补程序版本包含此修补程序。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
970365 (http://support.microsoft.com/kb/970365/LN/ ) SQL Server 2008 生成之后 SQL Server 2008 Service Pack 1 发布发布
Microsoft SQL Server 2008 修复程序会创建特定 SQL Server 服务包。必须将 SQL Server 2008 Service Pack 1 修补程序应用到 SQL Server 2008 Service Pack 1 的安装。默认状态下,SQL Server service pack 中提供的任何修补程序包含在下一个 SQL Server 服务包中。
永生天地 2010-05-22
  • 打赏
  • 举报
回复
这么多人都绑定了,我就帮查查吧
icecar 2010-05-22
  • 打赏
  • 举报
回复
当我把执行的语句改成如下时:
EXEC xp_cmdshell 'dtexec /f "C:\cwk.dtsx" /SET \package.variables[user::rq].Value;"2004-01-31" /Decrypt "123" '

报错信息为:说明: 包路径引用了找不到的对象:“\package.variables[user::rq].Value”。在尝试解析找不到的对象的包路径时,会出现此情况。

望各位高人指点。
dawugui 2010-05-22
  • 打赏
  • 举报
回复
不懂,帮顶,学习,蹭分.
andycode 2010-05-22
  • 打赏
  • 举报
回复
绑定,等高手解决。
  • 打赏
  • 举报
回复
没用过,绑定。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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