Security5:Execute AS 和 impersonate 权限
在master数据库中,SQL Server提供系统扩展的存储过程,其中有一些存储过程的命名以xp_开头,用于处理操作系统的文件。
一,判断文件是否存在
存储过程sys.xp_fileexist 用于判断文件是否存在,参数是文件(file)的路径或目录的路径:
exec master.sys.xp_fileexist 'D:\test.txt'
该存储过程返回的结果集有一行数据,三个字段,如下图:

二,创建子目录
存储过程 sys.xp_create_subdir 用于创建子目录,参数是子目录的路径:
exec master.sys.xp_create_subdir 'D:\test'
执行存储过程,系统返回消息:Command(s) completed successfully,说明子目录创建成功。
三,查看子目录结构
存储过程sys.xp_dirtree 用于显示当前目录的子目录,该存储过程有三个参数:
- directory:第一个参数是要查询的目录;
- depth :第二个参数是要显示的子目录的深度,默认值是0,表示显示所有的子目录;
- file :第三个参数是bool类型,指定是否显示子目录中的文件(file),默认值是0,表示不显示任何文件,只显示子目录(directory);
exec master.sys.xp_dirtree 'D:\data'
该存储过程返回的字段有子目录名称和相对深度,返回的结果中并没有显示子目录的父子关系:

四,删除文件
存储过程 sys.xp_delete_file 用于删除文件,该存储过程有5个参数:
- 第一个参数是文件类型(File Type),有效值是0和1,0是指备份文件,1是指报表文件;
- 第二个参数是目录路径(Folder Path), 目录中的文件会被删除,目录路径必须以“\”结尾;
- 第三个参数是文件的扩展名(File Extension),常用的扩展名是'BAK' 或'TRN';
- 第四个参数是Date,早于该日期创建的文件将会被删除;
- 第五个参数是子目录(Subfolder),bool类型,0是指忽略子目录,1是指将会删除子目录中的文件;
该存储过程不会删除任意类型的文件,系统限制它只能删除特定类型(备份文件和报表文件)的文件。
declare @Date datetime = dateadd(day,-30,getdate())
exec master.sys.xp_delete_file 0,'D:\test\','bak',@Date,0
五,查看磁盘驱动的空闲空间
存储过程 sys.xp_fixeddrives用于查看磁盘驱动器剩余(free)的空间
exec sys.xp_fixeddrives

六,执行DOS命令操作文件
存储过程sys.xp_cmdshell 用于执行DOS命令,该功能对应SQL Server系统的xp_cmdshell高级选项,默认情况下,该选项是禁用的,执行该存储过程,系统会抛出错误消息:
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', search for 'xp_cmdshell' in SQL Server Books Online.
因此,在执行该存储过程之前,必须启用xp_cmdshell选项,由于启用该选项有潜在的风险,建议用户在执行代码之后,禁用该选项。
1,启用/禁用xp_cmdshell选项
xp_cmdshell选项属于系统的高级选项,执行以下代码,允许用户修改高级选项:
-- To allow advanced options to be changed.
exec sys.sp_configure 'show advanced options', 1;
go
-- To update the currently configured value for advanced options.
reconfigure;
go
使用以下代码启用xp_cmdshell选项:
-- To enable the feature.
exec sys.sp_configure 'xp_cmdshell', 1;
go
-- To update the currently configured value for this feature.
reconfigure;
go
使用以下代码禁用xp_cmdshell选项:
-- To disable the feature.
exec sys.sp_configure 'xp_cmdshell', 0;
go
-- To update the currently configured value for this feature.
reconfigure;
go
2,常用的DOS命令
该存储过程使得用户可以通过TSQL命令执行DOS命令,参数是命令字符串:
exec sys.xp_cmdshell 'command_string'
2.1 建立新文件或增加文件内容
格式:ECHO 文件内容>file_name
exec master.dbo.xp_cmdshell 'echo abc > D:\share\test.txt'
2.2 查看文件内容
格式:TYPE file_name
exec master.dbo.xp_cmdshell 'type D:\share\test.txt'
2.3 复制文件
格式: COPY file_name new_folder
exec master.dbo.xp_cmdshell 'copy D:\test\test.txt D:\share\'
2.4 显示目录
格式:DIR folder
exec master.dbo.xp_cmdshell 'dir D:\share\'
2.5 创建目录
格式:MD folder_name
exec master.dbo.xp_cmdshell 'md D:\share\test\'
2.6 删除目录
格式:RD folder
exec master.dbo.xp_cmdshell 'rd D:\share\test'
2.7 删除文件
格式:DEL file_name
exec master.dbo.xp_cmdshell 'del D:\share\test.txt'
2.8 重命名文件
格式:REN [盘符:][路径]〈旧文件名〉〈新文件名〉
exec master.dbo.xp_cmdshell 'ren D:\test\test.txt new.txt'
2.9 移动文件
格式:MOVE file_name new_folder
exec master.dbo.xp_cmdshell 'move D:\test\new.txt D:\share\'
2.10 切换目录
格式:CD[盘符:][路径名][子目录名]
3,执行BCP命令
参考文档:
xp_cmdshell Server Configuration Option
Security5:Execute AS 和 impersonate 权限的更多相关文章
- 解决linux用户切换失败 su:execute /usr/bin 没有权限
问题描述: 回宿舍前,在root用户中安装fish,并修改其shell为fish.回宿舍之后,在图形界面用root用户进行登陆,莫名其妙登陆失败.没有任何提示信息,直接回到登陆界面.用非root用户登 ...
- [MySQL]MySQL之权限管理
一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允许你从某台机器上连接m ...
- mysql权限管理
经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! 一.MYSQL ...
- MySQL之权限管理
MySQL之权限管理 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作, 那么你就不能执行update操作.只 ...
- 管理权限<八>
权限:如果用户要访问其它方案的对象,则必须为其授予对象的权限.为权限 权限 权限是指执行特定类型 sql 命令或是访问其它方案对象的权利,包括系统权限和对象权限两种. 系统权限 系统权限介绍 ...
- MYSQL数据库管理之权限管理
经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! 一.MYSQL ...
- mysql 权限管理
参考: http://www.cnblogs.com/Richardzhu/p/3318595.html 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内 ...
- Oracle系列之权限
涉及到表的处理请参看原表结构与数据 Oracle建表插数据等等 赋予权限:前三个要在管理员权限用户下进行操作 方法1: grant dba to db_user;--赋予用户数据库管理权限 方法2: ...
- oracle10 权限角色
管理权限和角色 介绍 这一部分我们主要看看oracle中如何管理权限和角色,权限和角色的区别在那里. 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作,oracle数据库会自动创建一个方案, ...
随机推荐
- 【转】浅谈truncate的使用
delete 操作不会改变表的高水标记,因此如果我们对一个表插入1000万条数据,然后再回滚(对insert操作做回滚相当于相应地做delete操作),会使表的高水标记增长得很高,这时虽然我们操作的表 ...
- Codeforces CF#628 Education 8 C. Bear and String Distance
C. Bear and String Distance time limit per test 1 second memory limit per test 256 megabytes input s ...
- checkbox和文本上下对齐
只需要分别给checkbox和文本加上这个样式就可以了: vertical-align:middle;
- T-SQL Recipes之Customized Database Objects
The Problem 创建灵活自定义对象决非是一个简单的任务.比如HR想看每种工作职称在所有年限里面的入职累计情况 The Solution 我们一步一步来拆解吧: 获取入职年限的集合,如1999, ...
- [BZOJ3751][NOIP2014] 解方程
Description 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m,每两个 ...
- Angular 单元格合并
在Angular实现表格输出的话,使用ng-repeat输出信息, 使用了: ng-repeat-start ng-repeat-end ng-hide="$first" < ...
- Java_位运算(移位、位与、或、异或、非)
public class Test { public static void main(String[] args) { // 1.左移( << ) // 0000 0000 0000 0 ...
- 关于node.js
JS是一种脚本语言,它的本身并不能进行编译和执行,在最早的时期只是作为浏览器的脚本,只能够在浏览器中执行操作,也就是说JS必须依赖一个运行环境作为载体才能够执行. 而nodejs是基于chromeV8 ...
- 开启PHP的伪静态
1.检测Apache是否支持mod_rewrite 通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有 apache2handl ...
- js中的navigator对象
Navigator 对象包含有关浏览器的信息.所有浏览器都支持该对象 在控制台中输出相关信息的代码 <script> console.log(navigator); </script ...