MSSQL Express版本自动备份数据库

由于Express版本的数据库没有自动备份数据库的功能,所以需要自己搭建好备份功能

 

一、具体原理:

1、利用SQL备份命令:Backup Database

2、使用sqlcmd执行备份命令

3、使用系统计划任务定时执行备份

 

二、具体操作步骤:

1、在数据库创建一个存储过程:sp_BackupDataBase

问:为什么要存储过程来执行Backup命令呢?

答:因为可以有更多的自定义操作

USE [master]
GO

/****** Object:  StoredProcedure [dbo].[sp_BackupDataBase]    Script Date: 2016/6/4 14:40:29 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_BackupDataBase]
    -- Add the parameters for the stored procedure here
    @Database NVARCHAR(300), 
    @BackupFolder NVARCHAR(300)
AS
BEGIN
    SET NOCOUNT ON;

    --取得当前时间字符串
    Declare @now Varchar(8)
    Set @now = Convert(Varchar(8),GETDATE(),112)
    
    --组成文件名
    Declare @filename Nvarchar(200)
    Set @filename = @Database + N'_' + @now + '.bak'

    --组成完整保存路径
    Declare @BackupPath Nvarchar(max)
    Set @BackupPath = @BackupFolder + '\' + @filename

    --备份数据库
    BACKUP DATABASE @Database TO DISK = @BackupPath WITH FORMAT;
END

GO

2、编写一个bat,使用sqlcmd执行存储过程

@ECHO OFF

IF NOT EXIST "C:\DB_Backup" MD "C:\DB_Backup"
sqlcmd -S . -E -Q "sp_BackupDatabase N'要备份的数据库名',N'C:\DB_Backup\'"

3、在系统创建计划任务,定时调用第二部创建的bat

 

至此,已经能正常自动备份了

注意一点就是,配置运行权限为SYSTEM

posted @ 2016-06-04 15:53  Mo  阅读(1103)  评论(0编辑  收藏  举报