月度归档:2019年04月

mssql sqlserver 系统存储过程xp_cmdshell简介说明


摘要:
下文主要讲述超级危险的sql系统存储过程xp_cmdshell的简介,如下所示:
实验环境:sql server 2008 R2



xp_cmdshell功能说明

xp_cmdshell 使用此系统存储过程,我们可以在sql脚本中运行cmd命令,并返回相应的输出结果,

由于cmd命令属于操作系统管理范畴的命令,所以此命令通常情况下会被关闭,
因为黑客可以通过运行此命令,在服务器上建立用户名、上传文件等等有害行为

xp_cmdshell语法说明
xp_cmdshell ‘命令内容’
—xp_cmdshell返回值说明—
将采用列表的形式返回命令执行的结果



xp_cmdshell举例应用

1.获取d盘所有目录

  exec xp_cmdshell 'dir D:\'

2.写入信息至相应的文件中

    DECLARE @maomaoA sysname, @maomaoB sysname
    SET @maomaoB = '测试文件写入'
    SET @maomaoA = 'echo ' + @maomaoB + ' > D:/test.txt'
    EXEC master..xp_cmdshell @maomaoA

3.将c盘的testA.txt文件复制到d盘testB.txt

      USE master
	  go
     EXEC xp_cmdshell 'copy c:\testA.txt  d:\testB.txt'

4.将返回内容插入至临时表中

  use master 
  go

  create table #maomao(info sysname null)
  go
  
   insert into #maomao (info)
    exec xp_cmdshell 'dir D:\' 
    go
	select *from #maomao
   go
  truncate table #maomao
  drop     table #maomao 

mssql sqlserver 使用xp_cmdShell运行时,报15281异常的处理办法


摘要:
下文讲述 使用xp_cmdshell运行时,出现消息异常的操作方法,如下所示:
实验环境:sql server 2008 R2



今天在sql查询管理器中运行xp_cmdshell命令时,出现以下错误现象:
消息 15281,级别 16,状态 1,过程 xp_cmdshell,第 1 行 SQL Server 阻止了对组件 ‘xp_cmdshell’ 的 过程 ‘sys.xp_cmdshell’ 的访问,

出现此类消息提示现象时,我们只需改变sql引擎的相关配置后,此脚本就可以正常运行。

  EXEC sp_configure N'show advanced options', N'1' 
     RECONFIGURE WITH OVERRIDE
  EXEC sp_configure N'xp_cmdshell', N'1'
    RECONFIGURE WITH OVERRIDE 
  EXEC sp_configure N'show advanced options', N'0' 
    RECONFIGURE WITH OVERRIDE


注意事项:
命令中关键字 RECONFIGURE的功能为,让配置立即生效(不用重启sql引擎)
如果进行以上设置后,xp_cmdshell还是无法运行时,此时我们需要添加xp_cmdshell所涉及的程序集,如下:
dbcc addextendedproc(“xp_cmdshell”,”xplog70.dll”);

mssql sqlserver 使用sql脚本删除历史备份文件的方法分享


摘要:
下文讲述 使用sql脚本删除历史备份文件的方法,如下所示:
实验环境:sql server 2008 R2



实现思路:
使用sql脚本删除文件,主要是利用xp_cmdshell调用系统命令的方法实现对指定文件的删除

  declare @fileName varchar(800)    ---定义待删除文件的全路径
  set @fileName ='D:\test\20190428-2TmpInfo.bak' 
  
  set @fileName ='del '+@fileName      ---组合删除命令
  exec xp_cmdshell  @fileName          ---执行删除命令