方法是参考网上的,做了下修改。
基本方式是:计划任务启动批处理文件,批处理执行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是备份日志。