做数据库备份作业的时候..想按日期建立文件夹..

首先要判断文件夹是否存在

DECLARE @PATH VARCHAR(255)  --路径
DECLARE @DATE VARCHAR(255) --日期 例如: 20171011
SET @DATE=CAST(DATEPART(YYYY,GETDATE()) AS VARCHAR)+CAST(DATEPART(MM,GETDATE()) AS VARCHAR)+CAST(DATEPART(DD,GETDATE()) AS VARCHAR)
SET @PATH = 'E:\SQL2012_BAK\'+@DATE+'\'
DECLARE @TEMP TABLE(A INT,B INT,C INT) --建立一个虚拟表 用来判断文件夹是否存在
INSERT @TEMP EXEC [MASTER]..XP_FILEEXIST @PATH
IF NOT EXISTS(SELECT * FROM @TEMP WHERE B=1)
BEGIN
--因为XP_CMDSHELL 函数的参数不允许使用变量拼接 所以使用EXEC(SQL)的方法
DECLARE @EX NVARCHAR(255)
SET @EX='EXEC XP_CMDSHELL ''MKDIR '+@PATH+''''
EXEC(@EX)
END

如果报错

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

则使用以下修改配置项包裹以上脚本

--开启 XP_CMDSHELL
GO
SP_CONFIGURE 'SHOW ADVANCED OPTIONS',1
RECONFIGURE
GO
SP_CONFIGURE 'XP_CMDSHELL',1
RECONFIGURE
GO //=================== 此处为使用了 XP_CMDSHELL 的脚本 //=================== --关闭 XP_CMDSHELL
GO
SP_CONFIGURE 'XP_CMDSHELL',0
RECONFIGURE
GO
SP_CONFIGURE 'SHOW ADVANCED OPTIONS',0
RECONFIGURE
GO

最后贴上数据库备份命令

--备份数据库
--此处可以放置多个数据库的备份 不必和定制作业步骤时选择的库是同一个
DECLARE @BAKFILE NVARCHAR(255)
SET @BAKFILE = @PATH+@DATE+'.DB1.BAK'
BACKUP DATABASE [DB1] TO DISK = @BAKFILE WITH COMPRESSION
SET @BAKFILE = @PATH+@DATE+'.DB2.BAK'
BACKUP DATABASE [DB2] TO DISK = @BAKFILE WITH COMPRESSION

综上所述, 最终版的SQL备份命令是: (展开查看)

---------------------------
--开启 XP_CMDSHELL
---------------------------
GO
SP_CONFIGURE 'SHOW ADVANCED OPTIONS',1
RECONFIGURE
GO
SP_CONFIGURE 'XP_CMDSHELL',1
RECONFIGURE
GO ---------------------------
--检查文件夹是否存在 不存在则创建
---------------------------
DECLARE @PATH VARCHAR(255) --路径
DECLARE @DATE VARCHAR(255) --日期 例如: 20171011
SET @DATE=CAST(DATEPART(YYYY,GETDATE()) AS VARCHAR)+CAST(DATEPART(MM,GETDATE()) AS VARCHAR)+CAST(DATEPART(DD,GETDATE()) AS VARCHAR)
SET @PATH = 'E:\SQL2012_BAK\'+@DATE+'\'
DECLARE @TEMP TABLE(A INT,B INT,C INT) --建立一个虚拟表 用来判断文件夹是否存在
INSERT @TEMP EXEC [MASTER]..XP_FILEEXIST @PATH
IF NOT EXISTS(SELECT * FROM @TEMP WHERE B=1)
BEGIN
--因为XP_CMDSHELL 函数的参数不允许使用变量拼接 所以使用EXEC(SQL)的方法
DECLARE @EX NVARCHAR(255)
SET @EX='EXEC XP_CMDSHELL ''MKDIR '+@PATH+''''
EXEC(@EX)
END ---------------------------
--备份数据库
---------------------------
DECLARE @BAKFILE NVARCHAR(255)
SET @BAKFILE = @PATH+@DATE+'.DB1.BAK'
BACKUP DATABASE [DB1] TO DISK = @BAKFILE WITH COMPRESSION
SET @BAKFILE = @PATH+@DATE+'.DB2.BAK'
BACKUP DATABASE [DB2] TO DISK = @BAKFILE WITH COMPRESSION ---------------------------
--关闭 XP_CMDSHELL
---------------------------
GO
SP_CONFIGURE 'XP_CMDSHELL',0
RECONFIGURE
GO
SP_CONFIGURE 'SHOW ADVANCED OPTIONS',0
RECONFIGURE
GO

SQL端通过脚本判断文件夹是否存在 并创建的更多相关文章

  1. SQL SERVER2008判断文件夹是否存在并创建文件夹

    原文地址:https://www.cnblogs.com/iiwen/p/7650118.html DECLARE @PATH VARCHAR(255) --路径 DECLARE @DATE VARC ...

  2. PHP判断文件夹是否存在和创建文件夹的方法(递归创建多级目录)

    在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其实不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了,那如何用mkdir来创建呢?先我抄一段 ...

  3. bat 批处理切换到当前脚本所在文件夹

    bat 批处理切换到当前脚本所在文件夹   切换到当前脚本所在的文件夹 ? 1 cd  %~dp0 另外附上一些bat基本内容 —————————————————————————————— 批处理常用 ...

  4. python os 命令,及判断文件夹是否存在

    使用前 import os导入模块   os模块: os.sep     可以取代操作系统特定的路径分割符 os.linesep  字符串给出当前平台使用的行终止符.例如,Windows使用'\r\n ...

  5. Java 判断文件夹、文件是否存在、否则创建文件夹

    1.判断文件是否存在,不存在创建文件 File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if( ...

  6. 判断文件是否存在,不存在创建文件&&判断文件夹是否存在,不存在创建文件夹

    1.判断文件是否存在,不存在创建文件 File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if( ...

  7. python 获取中文拼音首字母;判断文件夹是否存在

    1.如何获取中文字符串的首字母 import pinyin #输入name def get_pinyin_first_alpha(name): return "".join([i[ ...

  8. shell 判断文件夹或文件是否存在

    文件夹不存在则创建 if [ ! -d "/data/" ];then mkdir /data else echo "文件夹已经存在" fi 文件存在则删除 i ...

  9. C语言判断文件夹或者文件是否存在的方法【转】

     C语言判断文件夹或者文件是否存在的方法   方法一:access函数判断文件夹或者文件是否存在 函数原型: int access(const char *filename, int mode); 所 ...

随机推荐

  1. C# 编写的SqlServer 数据库自动备份服务,带配置,功能强大

    数据库自动备份服务,带配置,还算可以吧 周末抽时间,编写了一个这样的工具,可以让,对数据库不了解或不熟悉的人,直接学会使用备份,省时省力,同样,我也将一份,通过脚本进行备份的,也奉献上来, 通过sql ...

  2. Service Worker 缓存文件处理

    交代背景 前段时间升级了一波Google Chrome,发现我的JulyNovel站点Ctrl+F5也刷新不了,后来发现是新的Chrome已经支持Service Worker,而我的JulyNovel ...

  3. table数据跑马灯效果

    1.使用marquee标签实现普通文本字符串跑马灯效果. <marquee behavior="scroll" scrollamount="3" styl ...

  4. Python【流程控制与循环】

    本文介绍 1.流程控制 2.while循环 一.流程控制 单分支 if 条件: ...Python代码,满足条件执行 双分支 if 条件: ...Python代码,满足条件执行 else: ...Py ...

  5. BZOJ 1562 [NOI2009] 变换序列

    [NOI2009] 变换序列 [题解] 就是有一个序列,每个位置可以填两个数,不可重复,问最小字典序. 显然,可以建一个二分图,判合法就是找完美匹配. 那怎么弄最小字典序呢?有好多种解法,我这里给出了 ...

  6. HttpRunnerManager接口自动化测试框架在win环境下搭建教程

    近几日一直在研究如何把接口自动化做的顺畅,目前用的是轻量级jmeter+ant+Jenkins自动化测试框架,目前测试界的主流是python语言,所以一直想用搭建一个基于python的HttpRunn ...

  7. day03.2-内置函数的使用

    1. 取绝对值函数,abs() res = abs(-1) print(res) """ 运行结果:1 结果分析:计算-1的绝对值 """ ...

  8. VUE随笔-20181020

    常用的一些指令 -------------------------------------------------------------------------------------------- ...

  9. [Maven实战-许晓斌]-[第二章]-2.6 NetBeans上面安装Maven插件

    NetBeans上面安装Maven插件

  10. PHP程序执行流程

    1, PHP文件一定放在服务器的,但是PHP中不同的内容会在不同的地方执行.下图演示了浏览器请求一个php页面的流程. 2,时序图如下所示,在浏览器中输入url后,首先去本机hosts文件中解析ip地 ...