【发布时间】:2020-05-13 19:57:15
【问题描述】:
我在运行调用 SSIS 包的 SQL Server 代理作业时收到错误消息,该包然后运行批处理文件的“执行进程任务”。具体来说,我得到的错误是这个
在“”处执行“d:\apps\bin\DoExport.bat”“-out ACNOR.TXT”时,进程退出代码为“1”,而预期为“0”。
然后我可以进一步查看错误信息:
%HOMEDRIVE%%HOMEPATH%: 在 D:/apps/perl/line.pm 第 1345 行没有这样的文件或目录。 BEGIN 失败——编译在 d:/apps/bin/Import/JDBC_DBH.pm 第 25 行中止。 在 d:/apps/bin/Import/DBWrapper.pm 第 280 行的 require 中编译失败。
我假设这是我的 SQL 代理的权限问题,因为我可以在此服务器上的 BIDS 中以交互方式运行它。
代理使用 SQL ID 运行,该 ID 在 SQL 服务器中具有系统管理员权限,并且在其运行的服务器上也具有管理员访问权限。在 SQL Server 服务(SQL Server、SQL Server 代理和 SQL Server 集成服务)中,我有一个 ID 设置,它也具有对服务器的管理员访问权限。
知道是什么导致了这个问题吗?
【问题讨论】:
-
SQL Server 代理用户是域帐户还是类似 "NT Service\MSSQL$SQLAGENT" 的帐户?我不确定对 %HOMEPATH% 的引用是否适用于后一种类型。您还可以尝试将您的用户名作为 SSIS 执行代理帐户添加到 SQL Server,以确保这是与凭据相关的问题
-
感谢您的回复。 SQL Server 代理用户是一个域帐户,也被设置为此作业的代理帐户。
-
这有点远,但是 32 位和 64 位呢,你有什么样的服务器?您是否已将 SSIS 项目属性更改为以 64 位运行?如果不是,请尝试将作业步骤更改为以 32 位运行 (stackoverflow.com/a/28325980/5605866)
-
我都试过了,但仍然收到同样的问题。
-
有趣的问题。 bat 和 perl 文件实际上是做什么的?你能展示它们的内容吗?至少来自文件 line.pm、第 1345 行及其周围的几行加上 bat 文件。
标签: sql-server batch-file ssis sql-agent