Ssis 为什么在dtexec上运行良好的包无法在SQL Server代理作业下运行?

Ssis 为什么在dtexec上运行良好的包无法在SQL Server代理作业下运行?,ssis,Ssis,我在本地C:驱动器上有一个包,如果我将其作为SQL代理作业的一部分运行,它将失败: 02/20/2013 17:38:45,MyUpload,Error,3,FMF-S3-1507\EOS01,PAM_MyUpload,Run MyUpload SSIS Package,, Executed as user: MARKETS\SVCSQLDEV. Microsoft (R) SQL Server Execute Package Utility Version 10.0.5500.0 for

我在本地C:驱动器上有一个包,如果我将其作为SQL代理作业的一部分运行,它将失败:

02/20/2013 17:38:45,MyUpload,Error,3,FMF-S3-1507\EOS01,PAM_MyUpload,Run MyUpload SSIS Package,,
Executed as user: MARKETS\SVCSQLDEV. 
Microsoft (R) SQL Server Execute Package Utility  Version 10.0.5500.0 for 64-bit  
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.    
Started:  17:38:45  Error: 2013-02-20 17:38:45.72     
Code: 0xC0011007     
Source: {14BE11F5-B737-4A6E-96E6-111635631749}      
Description: Unable to load the package as XML because of package does not have a valid XML format. A specific XML parser error will be posted.  End Error  
Error: 2013-02-20 17:38:45.72     
Code: 0xC0011002     
Source: {14BE11F5-B737-4A6E-96E6-111635631749}      
Description: Failed to open package file "C:\MyFolder\Package.dtsx" due to error 0x80070003 "The system cannot find the path specified.".  This happens when loading a package and the file cannot be opened or loaded correctly into the XML document. This can be the result of either providing an incorrect file name was specified when calling LoadPackage or the XML file was specified and has an incorrect format.  End Error  
Could not load package "C:\MyFolder\Package.dtsx" because of error 0xC0011002.  
Description: Failed to open package file "C:\MyFolder\Package.dtsx" due to error 0x80070003 "The system cannot find the path specified.".  This happens when loading a package and the file cannot be opened or loaded correctly into the XML document. This can be the result of either providing an incorrect file name was specified when calling LoadPackage or the XML file was specified and has an incorrect format.  
Source: {14BE11F5-B737-4A6E-96E6-111635631749}  
Started:  17:38:45  
Finished: 17:38:45  
Elapsed:  0.047 seconds.  
The package could not be found.  The step failed.
,00:00:00,0,0,,,,0
但是,如果我从SQL Agent作业步骤复制命令行并使用
DTExec.exe
运行它,则会成功:

C:\Program Files\Microsoft SQL Server\100\DTS\Binn>DTExec.exe /FILE "C:\MyFolder\Package.dtsx"  /CHECKPOINTING OFF /REPORTING E
Microsoft (R) SQL Server Execute Package Utility
Version 10.50.1600.1 for 32-bit
Copyright (C) Microsoft Corporation 2010. All rights reserved.

Started:  17:44:00
DTExec: The package execution returned DTSER_SUCCESS (0).
Started:  17:44:00
Finished: 17:44:56
Elapsed:  55.266 seconds

在作业步骤中,我可以尝试解决什么问题?commandshell类型的jobstep是正确的方法吗?

我相信您有权限问题。如果查看您发布的日志,
由于错误0x80070003“系统找不到指定的路径”,无法打开程序包文件“C:\MyFolder\package.dtsx”。

这是什么意思? 运行SQL代理的帐户无权访问C:\MyFolder

决议 您可能需要将文件系统授予该帐户。或者,您可以创建授权凭据并更改作业步骤以使用该帐户

从评论中 您能告诉我您所说的“将文件系统授予该帐户”是什么意思吗

Windows在文件夹/对象级别定义权限。如果右键单击文件夹并选择“属性”,则会出现一个“安全”选项卡(假设您有查看权限)。其中列出了可以访问文件夹的组或用户名,然后列出了与该组或用户名关联的权限

权限选项包括:完全控制、修改、读取和执行、列出文件夹内容、读取、写入和特殊权限

在这种情况下,运行包
MARKETS\SVCSQLDEV
的用户没有查看/读取
C:\MyFolder\package.dtsx

可能是用户无法列出文件夹内容,或者用户可以列出内容但无法从中读取。我不是保安人员,所以任何与此相关的建议都应该交给你的保安人员

也就是说,我会单击顶部的编辑按钮,然后添加用户。您可能需要将“从此位置”更改为指向您的域,而不是本地计算机。无论如何,找到用户并单击ok


然后在权限部分,选中列表文件夹并阅读。单击“确定”关闭该屏幕,再次单击“确定”关闭“安全”选项卡。假设您有能力执行所有这些操作,则帐户现在可以对文件夹进行读取/列表访问。

这是安全问题。请将文件夹从c移动到任何其他驱动器或更改文件夹的安全设置。

尝试将\File选项置于末尾:

C:\Program Files\Microsoft SQL Server\100\DTS\Binn>DTExec.exe   /CHECKPOINTING OFF /REPORTING E /FILE "C:\MyFolder\Package.dtsx"

在BIDS中重新打开包,并正确检查配置以及数据库连接字符串等。。。。当我们部署时,选择“启用配置”。

另一个解决方案——我最终选择的解决方案——是在服务器上上载我的
*.dtsx
。在SSMS中:打开
对象浏览器
连接
->
集成服务
存储包
->
MSDB
,右键单击,
导入包
,位置-
文件系统
,选择路径和名称,保护级别:
依赖服务器存储
。请告知“将文件系统授予该帐户”是什么意思。@variable补充了说明