xp_cmdshell以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出

解决方案 »

  1.   

    xp_cmdshell 以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出,而不会显示被运行程序或执行指令的界面。
      

  2.   

    那要怎么样才能使sql server运行指定的win32 程序?
      

  3.   

    可能是你用默认的本地系统帐户来运行SQL SERVER,而这个帐户是不能用交互界面的,你试试用ADMINISTRATOR来启动SQL SERVER
      

  4.   

    回楼上的:
    在系统服务中选择操作系统(win2k server)的系统管理员来登录,并重新启动服务,效果还是一样。
      

  5.   


    用ADMINISTRATOR来启动SQL SERVER,后执行
    sp_configure 'xp_cmdshell','1'
    reconfigure with override
      

  6.   

    楼上的
    sp_configure 'xp_cmdshell','1'
    执行提示错误服务器: 消息 15123,级别 16,状态 1,过程 sp_configure,行 78
    配置选项 'master..xp_cmdshell' 不存在,也可能是高级选项。
      

  7.   

    sp_configure 'xp_cmdshell','1'
    ==============>
    这是SQL Server 2005中的,只是启用xp_cmdshell
      

  8.   

    难道真的没有办法启动外部win32程序吗?
      

  9.   

    >使用Sqlserver的xp_CmdShell扩展存储过程的一个注意:
      这个存储过程只能执行Dos控制台程序,其他的Exe程序不能在Sqlserver进程空间执行.
      

  10.   

    或者试一个变通的方法:自己写一个控制台程序,在那个程序里调用实际想执行的WIN32程序,
    而用xp_CmdShell来调用自己写的控制台程序
      

  11.   

    楼上的方法估计不行,我试过编辑一个.bat文件,里面有执行一个win32的程序,结果还是一样
      

  12.   

    我也试过创建一个dts包,是可以正常运行win32程序,还可以加命令参数,但是不知道怎么调用,还有不能看见这个包的脚本.
      

  13.   

    可以用dtsrun来执行DTS包,另外.bat文件的控制功能太弱了,用编程的方法应该可以实现
      

  14.   

    dts包不灵活,bat文件也不能实现,
      

  15.   

    我不知道你为什么那么执着要执行一个WIN32程序,如果你实在想要这样,你可以这样:
    先编写一个程序并事先运行它,它的任务就是监听管道或是其它进程间通信渠道,并把收到的信息(是一个字符串,里面有要执行的WIN32程序的全部信息)用CeateProcess(或ShellExcute)来执行它,再写一个控制台程序,它的任务就时与先前的程序进行进程间通信把要执行的WIN32程序的信息传过去,最后你就用xp_cmdshell来调用这个控制台程序吧