使用SQL 创建数据库备份作业


sql server2008R2 备份所有数据库

create PROCEDURE [dbo].[my_backup] @DISK VARCHAR(400)
AS
BEGIN
    /*********************************************************
    -- my_backup 'D:\DBBackup\'
    *********************************************************/

    --SELECT [name],database_id INTO #tmp FROM sys.databases 
    --WHERE [name] NOT IN ('master','tempdb','model','msdb')

    --DECLARE @DBName NVARCHAR(128)
    --DECLARE @SqlBackupDataBase as nvarchar(1000)

    --WHILE EXISTS(SELECT * FROM #tmp)
    --BEGIN
    --    SELECT TOP 1 @DBName=[name] FROM #tmp ORDER BY database_id
    --    set @SqlBackupDataBase=N'BACKUP DATABASE '+@DBName+' TO DISK = '''+@DISK+'\\'+@DBName+'-'+
    --    CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak'''
    --    print @SqlBackupDataBase --打印出来(为了方便调试,可省略)
    --    exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL

    --    DELETE FROM #tmp WHERE [name]=@DBName
    --END

    SET NOCOUNT ON;
    IF @DISK = ''  RETURN;
    DECLARE @sql NVARCHAR(MAX);
    IF(RIGHT(@DISK, 1) <> '\') SET @DISK=@DISK+'\'

    SET @sql = '';

    DECLARE @ts VARCHAR(50)=CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')

    SELECT @sql = @sql + 'BACKUP DATABASE [' + name + '] to DISK=''' + @DISK + name + '-'+@ts+'.bak'' ' + CHAR(10)
    FROM sys.databases
    WHERE name NOT IN ( 'master', 'tempdb', 'model', 'msdb' );
    --print @sql    
    EXEC (@sql);
END;
GarsonZhang www.yesdotnet.com

最新的命

CREATE PROCEDURE sys_backup
AS
BEGIN
    --EXEC sp_who @@SPID 
    DECLARE @DBName NVARCHAR(128)=DB_NAME() -- 获得当前数据库名
     
    DECLARE @SqlBackupDataBase as nvarchar(1000)
    set @SqlBackupDataBase=N'BACKUP DATABASE '+@DBName+' TO DISK = ''D:\DBBackup\'+@DBName+'-'+
    CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak'''
    print @SqlBackupDataBase --打印出来(为了方便调试,可省略)
    exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL
END
GarsonZhang www.yesdotnet.com

SQL Server 作业无非就是按照规定的时间执行指定的脚本,这里介绍如何用SSMS(SQL Sever 2008)创建作业备份数据库。

(0)假设在创建作业之前你所要备份的数据库已经存在;其次,你已经会启动SQL Sever 代理(一般是关闭的)

(1)创建SQL Server代理作业

(1.1)新建作业,输出常规信息

如上图:输入作业名称(如:BackupJobTest),这里所有者和类别都是默认的,输入说明(就跟写代码要写注释一样,利人利己)

 

(1.2)设置作业执行步骤

点击左边“选择页”中的步骤属性选项卡,点击“新建”按钮

作业步骤属性窗口中,类型选择(T-SQL),选择要备份的数据库,并粘贴上调试好的SQL 备份脚本,由于我也是第一次写,贴一段示例在这里,读者可以自行参考修改:

--将SQL脚本赋值给变量
declare @SqlBackupDataBase as nvarchar(1000)
set @SqlBackupDataBase=N'BACKUP DATABASE YourDataBaseName TO DISK = ''E:\DBBackup\YourDataBaseName-'+
CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak'''
--备份文件格式:YourDataBaseName-20140626233410.bak
print @SqlBackupDataBase --打印出来(为了方便调试,可省略)
exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL
GarsonZhang www.yesdotnet.com

注:CONVERT()函数的第三个参数是时间样式ID;用REPLACE()函数替换掉了时间中的冒号(因为Windows中文件名不能包含该字符)

 

时间格式及ID对照表参考:W3school

 

(1.3)设置作业执行计划

在计划选项卡中,点击“新建”按钮新建计划:

设置完成后,点击”确定“按钮,另外三个属性“警报”、“通知”、“目标”如果需要可以自行设置,这里不再讲述。

完成计划设置后,点击上级的“确定”按钮,作业就创建完成了。

 

(2)手动验证作业执行的正确性

右键单击作业节点下刚建立的作业(图中的“BackupJobTest”),选择‘作业开始步骤(T)’

执行结果如下,表示成功:

点击“查看历史记录(V)”,可查看日志:

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:SQL Server中常用全局变量介绍
下一篇:C#格式化JSON字符串
评论列表

发表评论

评论内容
昵称:
关联文章

使用SQL 创建数据库备份作业
.net core使用Microsoft.Data.Sqlite创建SQLite数据库文件
Python使用SQL Server数据库
SQL Server 数据库安全之角色
GZDBHelper连接SQL Server 数据库
SQL表数据多的时候创建索引失败,提示:- 无法创建索引“idx_**”。执行超时已过期。完成操作之前已超时或服务器未响应。
SqlServer备份还原 出现操作系统错误 5(拒绝访问) 的解决方案
SQL Server 数据库类型和.NET数据类型映射关系
GZDBHelper连接SQLite数据库
SQL Server获得所有数据库,所有表试图和字段
C# asp.net mvc 创建虚拟目录
GZDBHelper连接MySQL数据库
SQL Server被防止木马记录,数据库病毒植入
GZDBHelper连接Oracle数据库
EFCore数据库提供程序
Xamarin.Forms 复制本地SQLite数据库
sql server系统表详细说明 之 sys.sql_modules
C# 数据库连接字符串Microsoft.Data.Sqlite数据库连接
数据库或者其他位置加载ASP.NET MVC Views 视图 数据库中加载 cshtml
SQL Server 查询参数管理类

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码