当前位置:主页>销售管理软件> 列表

SQLSERVER 传递参数给外部程序

仓库管理软件版1楼: 目的: 通过SQLSERVER的触发器或者存储过程调用外部程序,并且传递一个或者多个参数给这个程序。并且这个程序要运行起来。如果实现,等待高手.............

2楼: 看不明白 如管家婆进销存破解版

3楼: 太过分了,不能通过其他办法吗,肉你![:D]

4楼: 语法
xp_cmdshell {''command_string''} [, no_output]

A. 返回可执行文件列表
下例显示执行目录命令的 xp_cmdshell 扩展存储过程。

EXEC master..xp_cmdshell ''dir *.exe''

B. 使用 Windows NT net 命令
下例显示 xp_cmdshell 在存储过程中的使用。下例先用 net send 通知用户 SQL Server 即将关闭,然后用 net pause 暂停服务器,最后用 net stop 关闭服务器。

CREATE PROC shutdown10
AS
EXEC xp_cmdshell ''net send /domain:SQL_USERS ''''SQL Server shutting down
in 10 minutes. No more connections allowed.'', no_output
EXEC xp_cmdshell ''net pause sqlserver''
WAITFOR DELAY ''00:05:00''
EXEC xp_cmdshell ''net send /domain: SQL_USERS ''''SQL Server shutting down


in 5 minutes.'', no_output
WAITFOR DELAY ''00:04:00''
EXEC xp_cmdshell ''net send /domain:SQL_USERS ''''SQL Server shutting down
in 1 minute. Log off now.'', no_output
WAITFOR DELAY ''00:01:00''
EXEC xp_cmdshell ''net stop sqlserver'', no_output

C. 不返回输出
下例使用 xp_cmdshell 执行命令字符串,且不向客户端返回输出。

USE master
EXEC xp_cmdshell ''copy c:\sqldumps\pubs.dmp \\server2\backups\sqldumps'',
NO_OUTPUT

D. 使用返回状态
在下例中,xp_cmdshell 扩展存储过程也给出了返回状态。返回代码值存储在变量 @result 中。

DECLARE @result int
EXEC @result = xp_cmdshell ''dir *.exe''
IF (@result = 0)
PRINT ''Success''
ELSE
PRINT ''Failure''

E. 将变量内容写入文件
下例将当前目录内容写入当前服务器目录下名为 dir_out.txt 的文件中。

DECLARE @cmd sysname, @var sysname
SET @var = ''dir /p''
SET @cmd = ''echo '' + @var + '' > dir_out.txt''
EXEC master..xp_cmdshell @cmd

5楼: 要有admin权限

6楼: 我的问题时这个样子的:



自己做一个程序exe,功能是使用SendMessage广播一个消息。
把这个程序在SQLSERVER中调用,但是在拦截消息的程序中接收不到消息,然后直接运行程序,那么消息就可以收到,痛苦。

试着把Exe的功能写在一个DLL中,也不能达到目的,那个大侠可以有相关的经验给我分享一下吧。

exec sp_dropextendedproc ''BroadCastLogelInfo'' --去除函数
exec sp_addextendedproc ''BroadCastLogelInfo'',''D:\Plib.dll'' --声明函数

declare @szText varchar(200)
declare @rt int

Set @szText = ''[Hello world]''

EXEC @rt = BroadCastLogelInfo @szText --调用BroadCastLogelInfo函数,参数为--@szText


或者用Exe调用也不行

DECLARE @cmd sysname
SET @cmd = ''Cmd.exe /c D:\PMain.exe '' + ''"world"''
EXEC xp_cmdshell @cmd

仓库管理软件版7楼: 或者Dos下面有没有关于消息机制方面的命令,除了Net Send 之外 , 能够被外部程序拦截并且获取消息内容的命令。

8楼: 全局变量应当可以的

9楼: 呵呵 老大,能不能说的比较明白点,给个范例看看

10楼: 自己在PMain.exe 中调试,看SendMessage返回什么。