XP_cmdshell

一 、简介

      xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。

二、SQL Server 2005中的xp_cmdshell

      由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell 默认是关闭的。
      此时,如果执行 xp_cmdshell 将会提示服务未开启: 
      exec xp_cmdshell 'dir c:\'

      消息 15281,级别 16,状态 1,过程 xp_cmdshell,第 1 行
      SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。

      系统管理员可以通过使 用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。

三、开启xp_cmdshell

      EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;  
  关闭一样.只是将上面的后面的那个"1"改成"0"就可以了:  
  EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;

      如果提示未能找到存储过程 'master..xp_cmdshell',操作如下:
      第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
      第二步执行:sp_addextendedproc 'xp_cmdshell','xpsql70.dll'

四、简单应用(创建一个文件夹 并且在里面创建一个数据库)    

use master
go
if exists(select * from sysdatabases where name='bbsDB')
   
drop database bbsDB
go
Exec xp_cmdshell 'mkdir d:\project'   --调用dos命令创建文件夹
 
create database bbsDB
 
on
(
 name
='bbsDB_data',
 filename
='d:\project\bbsDB_data.mdf',
 size
=10mb,
 filegrowth
=20%
)
log on
(
name
='bbsDB_log',
 filename
='d:\project\bbsDB_data.ldf',
 size
=3mb,
 maxsize
=20mb,
 filegrowth
=10%
)

 

 

 

 

     

 

 

 

 

posted @ 2010-03-02 15:50  闭着眼睛想  阅读(723)  评论(1)    收藏  举报