将文件写入另一台服务器的SQL Server 2005 SSIS作业将不会运行,但将通过MSDB运行

时间:2009-09-23 20:53:59

标签: sql-server-2005 ssis

我有一个SSIS包,写入另一台服务器上的csv文件。当我从MSDB文件夹中手动执行它时,它会正常运行,但是当我尝试在作业中运行它时,它会因以下错误而失败:

如果我将文件路径运行为W:\ share \ file.csv(我将另一台服务器映射到驱动器号W :),我得到:

  

以用户身份执行:NT AUTHORITY \ NETWORK SERVICE。 Microsoft(R)SQL Server执行包实用程序版本9.00.3042.00(适用于32位版权所有(C)Microsoft Corp 1984-2005。版权所有。开始时间:3:28:34 PM错误:2009-09-22 15:28:36.65代码:0xC020200E源:数据流任务描述:无法打开数据文件“W:\ share \ file.csv”。结束错误错误:2009-09-22 15:28:36.67代码:0xC004701A源:数据流任务DTS.Pipeline描述:组件“FlatFileConnection”(46)未执行预执行阶段并返回错误代码0xC020200E。结束错误DTExec:程序包执行返回DTSER_FAILURE(1)。开始于:3:28:34 PM完成时间:下午3:28:36经过:2.484秒。包执行失败。步骤失败了。

如果我使用文件路径运行它作为\\ server \ share \ file.csv,我得到:

  

以用户身份执行:NT AUTHORITY \ NETWORK SERVICE。 Microsoft(R)SQL Server执行包实用程序版本9.00.3042.00(适用于32位版权所有(C)Microsoft Corp 1984-2005。版权所有。开始时间:上午9:28:44错误:2009-09-23 09:28:45.62代码:0xC001401E源:连接管理器“平面文件连接管理器”描述:文件名\ server \ share \ file.csv“在连接无效。结束错误错误:2009-09-23 09:28:45.62代码:0xC001401D源:SSIS作业说明:连接“FlatFile连接”验证失败。结束错误DTExec:程序包执行返回DTSER_FAILURE(1)。启动:上午9:28:44完成时间:上午9:28:45经过:0.813秒。包裹执行失败。步骤失败。

如果我通过MSDB文件夹手动运行它,我可以使用这两种文件格式成功运行它。我尝试使用除NT AUTHORITY \ NETWORK SERVICE之外的其他代理,例如系统和网络管理员,但仍然没有运气,所以我真的不认为这是一个权限问题。如果我尝试将文件写入本地服务器,则作业将成功运行。

有什么想法吗?我一直在努力解决这个问题,所以我一定会对此有所了解。

2 个答案:

答案 0 :(得分:0)

这看起来像是权限问题。当您手动执行它时,它将作为您的网络帐户运行。从作业执行它时,它作为NT AUTHORITY \ NETWORK SERVICE运行。尝试更改您的SQL代理服务帐户以便以您的方式运行,即您的网络帐户。然后让它执行在您的凭据下运行的作业(确保启动和停止服务)。这将验证它是否真的是权限问题。

答案 1 :(得分:0)

你的W:如何映射?对于运行包的帐户,请确保它是在使用时可用的映射。见MSDN blog entry here。以下是该文章的一些相关说明:

  

正如KB180362文章中所解释的那样,这正是代理工作的问题:

     

服务(或在不同安全性中运行的任何进程)   必须访问远程资源的上下文应该使用Universal   命名约定(UNC)名称以访问资源。 UNC名称没有   受到本文所述的限制。

我遇到了同样的错误,SQL Server 2008 R2运行作为sa的作业并写入同一服务器。在我的例子中,我将SSIS配置文件中的\ server \ dir \ subdir路径更改为e:\ dir \ subdir,这是本地帐户通常使用的。这似乎有效。 (我的工作很长一段时间都运行良好,最近才开始失败,但并非总是如此。)