您的位置:首页 > 数据库

MSSQL Express版本自动备份数据库

2016-06-04 15:53 417 查看
由于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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: