紧急求助:如何通过自动执行“存储过程”来自动启动一个应用程序?????我的目的就是想让让自己的程序随着SQLServer的启动而自动启动!!!!请大家到我所发的另一个帖子里讨论,谢谢!
http://community.csdn.net/Expert/topic/5747/5747365.xml?temp=6.841677E-02

解决方案 »

  1.   

    存储过程不能触发,但SQLServer可以在启动时自动执行一些存储过程。
    我的问题是如何在存储过程中执行某一个应用程序,
    例如 xp_cmdshell 'c:\Test.exe'
      

  2.   

    --创建测试存储过程 Test_AutoStartup
    CREATE PROCEDURE Test_AutoStartup AS
    --要有执行xp_cmdshell这个存储过程的权限
    exec master.dbo.xp_cmdshell 'c:\Test.exe'
    go--设置 scan for startup procs 选项,允许 SQL Server 启动时扫描自动执行的存储过程。
    exec sp_configure 'scan for startup procs',1
    reconfigure
    go--将测试存储过程 Test_AutoStartup 设置为启动时自动执行
    exec sp_procoption 'Test_AutoStartup', 'startup', 'true'
    go--重启电脑或 SQL Server
      

  3.   

    感谢Limpire(昨夜小楼) 的指点,但是我按照Limpire(昨夜小楼) 的方法做了以后,仍然没有实现自动启动“自己的应用程序”,我的方法如下:--step 1
    exec sp_configure 'show advanced options', 1--step 2
    --设置 scan for startup procs 选项,允许 SQL Server 启动时扫描自动执行的存储过程。
    exec sp_configure 'scan for startup procs', 1
    reconfigure
    go--step 3
    CREATE PROCEDURE Test_AutoStartup AS
    exec master.dbo.xp_cmdshell 'c:\Notepad.exe'--step 4
    --将测试存储过程 Test_AutoStartup 设置为启动时自动执行
    exec sp_procoption 'Test_AutoStartup', 'startup', 'true'
    go--step5
    重启电脑或 SQL Server--Step 6
    --系统没有任何反映,并没有自动启动 Notepad.exe
    --实验失败--Step 7
    --单独在查询分析器中执行Test_AutoStartup ,系统长期没有反应,处于假死机状态,
    --取消执行,华了10多分钟才取消操作
    --实验失败--Step 8
    --流泪ing
      

  4.   

    --try
    exec master.dbo.xp_cmdshell 'Notepad.exe' no_ouput
      

  5.   

    大概明白了:xp_cmdshell和它执行的命令是同步的执行的,命令完成之后,才会将控制权交回xp_cmdshell。
      

  6.   

    Limpire(昨夜小楼),有没有其它办法 ?
      

  7.   

    To Limpire(昨夜小楼):
        libin_ftsafe(子陌红尘:TS for Banking Card) 层提到过用Job,他说:如果SQL Agent服务也会同时启动,那么可以考虑使用一个JOB。JOB1:如果不存在全局临时表##JOB111
    --执行“ 调用xp_cmdshell + 自动的程序”的操作
    --创建临时表##JOB111
    反之
    --不执行任何操作但我想:如果 exec master.dbo.xp_cmdshell 'Notepad.exe' 的问题不解决,用Job恐怕也是没有用的。
      

  8.   

    据说可以通过COM组件实现,我也不太清楚,你搜索一下。记得将你的存储过程改为不是自动执行:exec sp_procoption 'Test_AutoStartup', 'startup', 'false'