【转】XP_cmdshell存储过程
原文地址:http://www.cnblogs.com/love_study/archive/2010/03/02/1676583.html
一 、简介
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'
四、简单应用(创建一个文件夹 并且在里面创建一个数据库)
1 go 2 if exists(select * from sysdatabases where name='bbsDB') 3 drop database bbsDB 4 go 5 Exec xp_cmdshell 'mkdir d:\project' --调用dos命令创建文件夹 6 7 create database bbsDB 8 on 9 ( 10 name='bbsDB_data', 11 filename='d:\project\bbsDB_data.mdf', 12 size=10mb, 13 filegrowth=20% 14 ) 15 log on 16 ( 17 name='bbsDB_log', 18 filename='d:\project\bbsDB_data.ldf', 19 size=3mb, 20 maxsize=20mb, 21 filegrowth=10% 22 )
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义