数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)[
来源:互联网 发布:wget mysql 5.7.20 编辑:程序博客网 时间:2024/05/16 00:42
--------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-04-18 10:45:14
-- Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
-- Blog :http://blog.csdn.net/htl258
-- Subject:数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)
--------------------------------------------------------------------------
--适用环境:SQL Server 2005及以上版本(主要用于作业中调用以及程序开发中调用)
USE master
GO
--1.周期性备份数据库代码(保留原来备份的):
--备份文件名为:原数据库名称+'_'+备份日期.bak
IF OBJECT_ID('sp_backupdatabase') IS NOT NULL
DROP PROC sp_backupdatabase
GO
CREATE PROC sp_backupdatabase
@path NVARCHAR(100)--路径
AS
--路径名格式标准化
IF RIGHT(@path,1)<>'/' SET @path=@path+'/'
--获取文件夹信息
DECLARE @t TABLE(id INT IDENTITY,a INT,b INT,c INT)
DECLARE @fpath NVARCHAR(3)
SET @fpath=LEFT(@path,3)
INSERT @t EXEC master..xp_fileexist @fpath
INSERT @t EXEC master..xp_fileexist @path
--如果指定盘符有误不存在,则返回错误提示:
IF EXISTS(SELECT 1 FROM @t WHERE id=1 AND c=0)
BEGIN
RAISERROR(N'输入的盘符不存在,请重新输入!',16,1)
RETURN
END
--如果不存在指定的文件夹,则创建:
ELSE IF EXISTS(SELECT 1 FROM @t WHERE b=0 AND id=2)
BEGIN
DECLARE @mddir NVARCHAR(100)
SET @mddir='md '+@path
EXEC master..xp_cmdshell @mddir
END
--开始备份数据库到指定的目录
DECLARE @s nvarchar(4000)
SELECT @s=ISNULL(@s+';','')
+N'BACKUP database ['+name+'] TO DISK = '''
+@path+name+'_'+CONVERT(NVARCHAR(8),getdate(),112)+N'.bak'''
FROM master..sysdatabases
WHERE name NOT IN('master','tempdb','model','msdb','pubs')--这里筛选不参加备份的数据库
EXEC(@S)
GO
--调用方法:
EXEC sp_backupdatabase 'f:/Backup/tony'
/*
--返回信息:
已为数据库 'mydb',文件 'mydb' (位于文件 1 上)处理了 312 页。
已为数据库 'mydb',文件 'mydb_log' (位于文件 1 上)处理了 1 页。
BACKUP DATABASE 成功处理了 313 页,花费 0.733 秒(3.336 MB/秒)。
已为数据库 'test',文件 'test' (位于文件 1 上)处理了 208 页。
已为数据库 'test',文件 'test_log' (位于文件 1 上)处理了 1 页。
BACKUP DATABASE 成功处理了 209 页,花费 0.413 秒(3.951 MB/秒)。
--备份后的文件列表:
mydb_20100418.bak
test_20100418.bak
*/
--2.周期性备份数据库代码(自动删除原备份文件):
--备份文件名为:原数据库名称.bak
IF OBJECT_ID('sp_backupdatabase') IS NOT NULL
DROP PROC sp_backupdatabase
GO
CREATE PROC sp_backupdatabase
@path NVARCHAR(100)--路径
AS
--路径名格式标准化
IF RIGHT(@path,1)<>'/' SET @path=@path+'/'
--获取文件夹信息
DECLARE @t TABLE(id INT IDENTITY,a INT,b INT,c INT)
DECLARE @fpath NVARCHAR(3)
SET @fpath=LEFT(@path,3)
INSERT @t EXEC master..xp_fileexist @fpath
INSERT @t EXEC master..xp_fileexist @path
--如果指定盘符有误不存在,则返回错误提示:
IF EXISTS(SELECT 1 FROM @t WHERE id=1 AND c=0)
BEGIN
RAISERROR(N'输入的盘符不存在,请重新输入!',16,1)
RETURN
END
--如果不存在指定的文件夹,则创建:
ELSE IF EXISTS(SELECT 1 FROM @t WHERE b=0 AND id=2)
BEGIN
DECLARE @mddir NVARCHAR(100)
SET @mddir='md '+@path
EXEC master..xp_cmdshell @mddir
END
--开始备份数据库到指定的目录
DECLARE @s nvarchar(4000)
SELECT @s=ISNULL(@s+';','')
+N'BACKUP database ['+name+'] TO DISK = '''
+@path+name+N'.bak'' WITH INIT'
FROM master..sysdatabases
WHERE name NOT IN('master','tempdb','model','msdb','pubs')--这里筛选不参加备份的数据库
EXEC(@S)
GO
--调用方法:
EXEC sp_backupdatabase 'f:/Backup/tony2'
/*
--返回信息:
已为数据库 'mydb',文件 'mydb' (位于文件 1 上)处理了 312 页。
已为数据库 'mydb',文件 'mydb_log' (位于文件 1 上)处理了 1 页。
BACKUP DATABASE 成功处理了 313 页,花费 0.599 秒(4.082 MB/秒)。
已为数据库 'test',文件 'test' (位于文件 1 上)处理了 208 页。
已为数据库 'test',文件 'test_log' (位于文件 1 上)处理了 1 页。
BACKUP DATABASE 成功处理了 209 页,花费 0.351 秒(4.651 MB/秒)。
--备份后的文件列表:
mydb.bak
test.bak
*/
- 数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)
- 数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)[
- 数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)
- 数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)
- 判断路径文件夹是否存在,不存在创建
- 判断路径目录不存在,则创建目录
- 数据库批量备份存储过程
- sql server 脚本创建备份数据库的存储过程及利用前述存储过程自动备份数据库的作业
- SQL1052N 数据库路径*不存在问题错误的解决
- 判断路径是否存在,不存在则创建该路径
- db2 创建数据库 提示路径不存在
- 日记 C++输入输出流 以及创建一个路径的过程(可以是不存在的路径)
- Java 判断多级路径是否存在,不存在就创建
- windows创建DB2数据库时报错--SQL1052N 数据库路径不存在
- Java API 自带的日志管理,可配置文件路径,并自动创建不存在的目录
- Java API 自带的日志管理,可配置文件路径,并自动创建不存在的目录
- 数据库--sql作业,执行自动备份的存储过程
- Delphi中调用oracle的存储过程返回数据集报“列不存在”错误
- TCP粘包问题
- 开天辟地-第一博文(第一篇,不是写得好)
- linux静态库链接静态库导致的链接错误解决办法
- 枚举如何定义
- magento -- 在导出CSV时进行转码以保证用excel打开有中文的CSV文件时不会乱码
- 数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)[
- WMA文件信息格式分析及代码
- 《WDF USB驱动开发指南》-- WDF简介
- 让Criteria.setFecthMode(String,FetchMode)变为inner join
- 经典SQL语句大全
- Groovy笔记(6)_闭包
- SQL 通配符
- 软件研发企业如何做好内训
- Java设计模式之Facade模式