SQLserver中的xp_cmdshell
shell是用户与操作系统对话的一个接口,通过shell告诉操作系统让系统执行我们的指令
xp_cmdshell在sqlserver中默认是关闭的存在安全隐患。
--打开xp_cmdshell EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; --关闭xp_cmdshell EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;
以下是跟xp_cmdshell有关的小例子。
1.显示C盘下的内容,这个比较简单
exec xp_cmdshell 'dir c:\'
执行结果如下:
2.将变量写入文本文件
DECLARE @cmd sysname, @var sysname SET @var = 'Today:2015-12-09' SET @cmd = 'echo ' + @var + ' > c:\Today.txt' EXEC master..xp_cmdshell @cmd
执行上述语句之后,你会在c盘下看到Today这个文件
--在查询分析器上执行(EXEC master..xp_cmdshell) EXEC master..xp_cmdshell 'bcp "select * from 数据库名.dbo.表名" queryout c:\currency.txt -S 数据库实例 -U"用户" -P"密码" -c' --把SQL语句生成一个.sql文件,然后调用 --注:路径的文件夹名称中间不能有空格 exec master..xp_cmdshell 'osql -S 数据库实例 -U 用户 -P 密码 -i C:\cmdshellTest.sql' --将数据导入到currency表中 EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 in c:\currency.txt -c -T' --导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。 EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 in c:\currency.txt -c -F 10 -L 13 -T'
作者:奔跑的金鱼
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!