mssql sqlserver “sql脚本”操作文件的方法分享


摘要:
下文讲述调用系统存储过程对服务器文件进行操作的方法,
及在Db服务器上运行dos命令、获取磁盘空间大小、等IO操作命令分享
sqlserver扩展存储过程以XP_开头,主要放入master数据库中,具体操作方法如下所示:


1 判断DB服务器是否存在指定文件
使用sys.xp_fileexist函数 输入文件全路径,可返回文件的相关信息

exec master.sys.xp_fileexist 'E:\test20180410.txt'

—————————————————-
2 在DB服务器上创建子目录
使用sys.xp_create_subdir 创建目录,如下:

exec master.sys.xp_create_subdir 'E:\20180420test'

—————————————————-
3 查看DB服务器目录结构
使用sys.xp_dirtree显示指定目录的子目录,该存储过程拥有三个参数:
directory:查询的目录
depth :查询深度默认为0 缺省值为0
file:输入bool型,是否显示子目录中的文件 默认值为0 缺省值为0 默认值不显示任何文件
file :第三个参数是bool类型,指定是否显示子目录中的文件(file),默认值是0,表示不显示任何文件,只显示子目录(directory);

exec master.sys.xp_dirtree 'E:\20180420test'

—————————————————-
4 删除DB服务器上的指定文件
使用存储过程sys.xp_delete_file删除指定文件,此扩展存储过程拥有5个参数
参数1:文件类型(File Type),有效值是0和1,0是指备份文件,1是指报表文件
参数2:目录路径(Folder Path), 目录中的文件会被删除,目录路径必须以“\”结尾
参数3:文件的扩展名(File Extension),常用的扩展名是’BAK’ 或’TRN’
参数4:是Date,早于该日期创建的文件将会被删除
参数5:是子目录(Subfolder),bool类型,0是指忽略子目录,1是指将会删除子目录中的文件

declare @tmpDate datetime = dateadd(day,-20,getdate())
exec master.sys.xp_delete_file 0,'E:\20180420test\','.bak',@tmpDate,0

—————————————————-
5 查看DB服务器磁盘空余空间
使用系统存储过程sys.xp_fixeddrives获取磁盘剩余空间,如下:

exec sys.xp_fixeddrives

mssql_sqlserver_db服务器磁盘空间获取

mssql_sqlserver_db服务器磁盘空间获取


—————————————————-
6 执行DOS命令
可以使用sys.xp_cmdShell提交dos命令,在执行此存储过程时,需启用DB服务器相关设置,如下所示:

exec sp_configure 'show advanced options', 1; 
go 
reconfigure; 
go 
exec sp_configure 'xp_cmdshell', 1; 
go 
reconfigure; 
----执行xp_cmdShell命令

exec master.dbo.xp_cmdshell 'dir c:\'  ---打开C盘目录
 
----关闭xp_cmdshell命令
exec sp_configure 'xp_cmdshell', 0; 
go 
reconfigure; 
mssql_sqlserver_执行dos命令的方法分享

mssql_sqlserver_执行dos命令的方法分享