• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Code

Always Begin...
  • 博客园
  • 管理

View Post

Express版SQL定时备份BAK文件(SQL2005,SQL2008)

方法是参考网上的,做了下修改。

基本方式是:计划任务启动批处理文件,批处理执行SQL语句文件,在SQL语句中执行数据库中的存储过程来备份数据库。
创建存储过程SQL:

Use 数据库名
GO

CREATE PROCEDURE [dbo].[sp_BackupDB]

@DBName sysname,
@bakType CHAR(1),
@bakToDir NVARCHAR(500)

AS 
BEGIN 
    SET NOCOUNT ON;

    DECLARE @sqlCommand NVARCHAR(1000)
    DECLARE @dateTime NVARCHAR(20)
    DECLARE @bakFullPath NVARCHAR(500)

    SELECT @dateTime=REPLACE(CONVERT(VARCHAR,GETDATE(),111),'/','')+REPLACE(CONVERT(VARCHAR,GETDATE(),108),':','')
		
        IF @bakType='F' 
            BEGIN
                SET @bakFullPath = @bakToDir + @DBName + '_Full_' + @dateTime +'.BAK'
                SET @sqlCommand='BACKUP DATABASE ' + @DBName + ' TO DISK = ''' + @bakFullPath +''''
            END
   
        IF @bakType='D'
            BEGIN
                SET @bakFullPath = @bakToDir + @DBName + '_Diff_' + @dateTime + '.BAK'
                SET @sqlCommand='BACKUP DATABASE ' + @DBName + ' TO DISK = ''' + @bakFullPath + ''' WITH DIFFERENTIAL'
            END
					
        IF @bakType='L'
            BEGIN
                SET @bakFullPath = @bakToDir + @DBName + '_Log_' + @dateTime + '.TRN'
                SET @sqlCommand='BACKUP LOG ' + @DBName + ' TO DISK = ''' + @bakFullPath + ''''
            END
        EXECUTE sp_executesql @sqlCommand
END
GO

 批处理内容:(-i后面是要执行的SQL文件)
sqlcmd -S .\SQLEXPRESS -E -i BackupDB.sql

BackupDB.sql内容

Use 存储过程所在数据库名
EXEC dbo.sp_BackupDB N'备份的数据库名',N'F',N'备份文件存储路径';

  F是完全备份,D是差异备份,L是备份日志。

posted on 2012-02-14 08:38  老十  阅读(1823)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3