大家好,我正在把头发拉出来。
我已经检查了我在数据库服务器(SQL Server 2000)和文件系统上的所有权限,以确保我想要做的事情应该是可能的。情况如下:
我有一个 Java EE Web 应用程序在我公司 Intranet 上的 Tomcat 服务器上运行。长话短说,这个应用程序处理数字,创建一个以管道分隔的记录文件,将其批量插入到我们的数据库中,并将文件保存在 UNIX 服务器上。
然后调用一个存储过程,它利用 xp_cmdshell 将文件从 UNIX FTP 到我们的 Windows SQL Server 框,以便 BULK INSERT 文件。当我从 Management Studio 调用此存储过程(以运行 Web 应用程序的 tomcat 用户身份登录)时,没有任何错误,并且 FTP 传输,并且文件已加载。
这是让我感到恼火的部分。
当 Java EE 应用程序调用此存储过程时,它实际上将文件通过 FTP 传输到 SQL Server 框,但即使成功,我最终也会出现 SQLServerException。没有押韵或理由。但是......即使抛出异常,我的文件最终还是在服务器上,一切都很好而且很舒适。
SQL Server 在从 UNIX 服务器运行 xp_cmdshell 时是否存在问题(这听起来很可笑,因为所有程序都在调用存储过程,所以我在星期二晚上 11:55 还在办公室,所以我想没有什么是太可笑了……)
任何见解都会很棒......
编辑:
此外,我一直在使用 SQL Profiler 查看到 SQL Server 的流量……我可以看到我用来调用存储过程的实际语句。当我将它复制到 SQL Server Management Studio 并使用我的 tomcat 用户凭据执行它时,它完美地执行......