本来是用xp_cmdshell命令,当某表增加记录时建一个目录,以“通知”外界程序,
但xp_cmdshell不安全,删除了,还有什么办法“通知”外界,例如:建个目录,或运行个什么东西~

解决方案 »

  1.   

    --sp_OACreate等系统储存过程调用File System Object组件来创建目录--示例代码:
    DECLARE @object int
    DECLARE @hr int
    DECLARE @src varchar(255), @desc varchar(255)
    Declare @tmp int
    declare @msg varchar(3000)
    declare @strPath  nvarchar(512)
    --Exec sp_MSGet_Setup_paths @strPath OUTPUT
    Set @strPath='g:\aaa'   --创建文件夹的路径和名称
    --创建Scripting组件实例
    EXEC @hr = sp_OACreate 'Scripting.FileSystemObject', @object OUT
    IF @hr <> 0
    BEGIN
       EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
       SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
        RETURN
    END
    --创建文件夹
    EXEC @hr = sp_OAMethod @object, 'CreateFolder', @tmp OUTPUT , @strPath
    IF @hr <> 0
    BEGIN
       EXEC sp_OAGetErrorInfo @object
        RETURN
    END--在sql2000和2005里面可以测试成功,7.0不行
    2005里面需要先打开ole自动化功能
    use master
    go
    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ole Automation Procedures', 1;
    GO
    RECONFIGURE;
    GO
      

  2.   

    File System Object组件中的方法 网上有的
    对文件夹操作的有 CreateFolder,DeleteFolder,GetFolder,MoveFolder,FolderExitst 方法