none
sql xp_cmdshell的问题 RRS feed

  • 问题

  • DECLARE @cmd SYSNAME ,
        @var SYSNAME
    SET @var = 'Hello world'
    SET @cmd = 'echo ' + @var + ' > var_out.txt'
    EXEC sys.xp_cmdshell @cmd;
    执行这个SQL时,出现:
    output
    拒绝访问。
    NULL
    请问这个为什么啊?

    大其心,可容天下之物; 虚其心,可受天下之善;


    • 已编辑 lfofiug 2013年9月14日 3:21
    2013年9月14日 3:18

答案

  • 没有指定路径

    先在C盘建立一个var_out.txt文件

    使用下面命令

    在使用命令xp_cmdshell的时候需要设置权限:
    /*MSsql2005 如何启用xp_cmdshell
    默认情况下,sql server2005安装完后,xp_cmdshell是禁用的(可能是安全考虑),如果要使用它,可按以下步骤
    */
    USE master
    GO
    -- 允许配置高级选项
    EXEC sp_configure 'show advanced options', 1
    GO
    -- 重新配置
    RECONFIGURE
    GO
    -- 启用xp_cmdshell
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    --重新配置
    RECONFIGURE
    GO
    
    
    
    
    DECLARE @cmd SYSNAME ,
        @var SYSNAME
    SET @var = 'Hello world'
    SET @cmd = 'echo ' + @var + ' > C:\var_out.txt'
    EXEC sys.xp_cmdshell @cmd

    2013年9月14日 6:22
  • 提示很清楚, 没有足够的权限你可以用 xp_cmdshell 'dir .' 确认当前的目录
    2013年9月16日 1:23

全部回复

  • 没有指定路径

    先在C盘建立一个var_out.txt文件

    使用下面命令

    在使用命令xp_cmdshell的时候需要设置权限:
    /*MSsql2005 如何启用xp_cmdshell
    默认情况下,sql server2005安装完后,xp_cmdshell是禁用的(可能是安全考虑),如果要使用它,可按以下步骤
    */
    USE master
    GO
    -- 允许配置高级选项
    EXEC sp_configure 'show advanced options', 1
    GO
    -- 重新配置
    RECONFIGURE
    GO
    -- 启用xp_cmdshell
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    --重新配置
    RECONFIGURE
    GO
    
    
    
    
    DECLARE @cmd SYSNAME ,
        @var SYSNAME
    SET @var = 'Hello world'
    SET @cmd = 'echo ' + @var + ' > C:\var_out.txt'
    EXEC sys.xp_cmdshell @cmd

    2013年9月14日 6:22
  • 提示很清楚, 没有足够的权限你可以用 xp_cmdshell 'dir .' 确认当前的目录
    2013年9月16日 1:23