大家好,本人做了一个关于SQL Server触发器调用批处理文件。现遇到下面问题不知道这么解决,希望大家帮帮忙!

opet_zhu 2006-06-30 02:11:25
今天写了一个简单的sqlserver触发器调用一个java的批处理文件。
CREATE TRIGGER [TRIGGER_trs_insert] ON dbo.tb_test
FOR INSERT
AS
begin
--1:先把记录插入到表tb_Operation
if @@rowcount = 0 return
insert into tb_Operation select idcm_id,'insert' from inserted
--2:调入批处理文件
declare @file varchar(100)
set @file = 'D:\work\TransData\TransData\trs_insert.bat'
exec master..xp_cmdshell @file
end
以上是本人写的触发器。

现遇到问题例下:
往表tb_test插入数据时从SQL server里打印出如下信息:
C:\WINNT\system32>java trs_insert
不知为什么会在C:\WINNT\system32运行此批处理文件??

trs_insert.bat文件(就一句话)
java trs_insert
...全文
243 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellowork 2006-06-30
  • 打赏
  • 举报
回复
在exec master..xp_cmdshell 中直接执行java程序,而不执行批处理试试.多换几个路径.
robin_yao 2006-06-30
  • 打赏
  • 举报
回复
楼主,是不是已经执行成功了,但是没界面,所以你没发现。
SQL SEVER执行你的批处理文件后,建议到进程管理器中去看一下有没有那个进程。
opet_zhu 2006-06-30
  • 打赏
  • 举报
回复
不使用exec master..xp_cmdshell 运行是可以的。
用exec master..xp_cmdshell 就不行了
hellowork 2006-06-30
  • 打赏
  • 举报
回复
不使用exec master..xp_cmdshell ,把楼主的java程序直接放到在C:\WINNT\system32中运行一下.如果还不行可能就是这个java程序本身的问题了,查看一下是否java程序中import了JDBC驱动库.
opet_zhu 2006-06-30
  • 打赏
  • 举报
回复
是jdbc驱动找不到,我也放到相应的目录下了(C:\WINNT\system32)。可还是报这个错误。
hellowork 2006-06-30
  • 打赏
  • 举报
回复
好像是JDBC驱动程序库找不到吧.把JDBC库放到C:\WINNT\system32下试试?
opet_zhu 2006-06-30
  • 打赏
  • 举报
回复
能执行的,但出错。报java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
因为我是java文件里用到了数据连接所有要引用sqlserver的驱动。
我已在系统变量里加了classpath。但还是不行
hellowork 2006-06-30
  • 打赏
  • 举报
回复
楼主的意思是不是exec master..xp_cmdshell @file执行不成功啊,就是java trs_insert没执行?如果出错会回显错误信息,错误信息是什么?.楼主能不能说得更详细一些?
opet_zhu 2006-06-30
  • 打赏
  • 举报
回复
谢谢,大家说的几种方法我都试了,然还是不行哦。
现在我只好把这些文件移到了System32下了,可要有其它问题了。
报java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
但我用手工做就没有报这个错。真烦哦。
那位仁兄有这方面的经验介绍一下哦。
而且我也在系统里加了classpath
LouisXIV 2006-06-30
  • 打赏
  • 举报
回复
说错了,是.bat批处理文件里
LouisXIV 2006-06-30
  • 打赏
  • 举报
回复
你在批处理命令里转换目录试试看?
hellowork 2006-06-30
  • 打赏
  • 举报
回复
exec master..xp_cmdshell @file,no_output关闭回显不行吗?
opet_zhu 2006-06-30
  • 打赏
  • 举报
回复
那有没有办法在指定的目录下运行?
LouisXIV 2006-06-30
  • 打赏
  • 举报
回复
xp_cmdshell 默认于C:\WINNT\system32下执行后续命令

EXEC master..xp_cmdshell 'dir *.exe'指令列出的便是C:\WINNT\system32目录下所有可执行文件

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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