使用Windows 【管理工具】的【任务计划程序】
操作步骤如下:
1. 选择【创建任务】,填入名称backup_db
2.然后选择【触发器】,假设选择每天执行一次,时间在下午6点。
3.选择【操作】- 新建- 启动程序,程序路径c:\backup.bat 确定
4.修改c:\backup.bat内容为:"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S .\SQLEXPRESS -E -i c:\Backup.sql
5.修改c:\backup.sql 内容,建立c:\backup目录,确认这个目录 Authenticated Users 这个用户有读写的权限
exec [usp_BackupDatabase] '需要备份的数据库名','c:\backup','F'
go
6.在你Master数据库内执行该段存储过程,该存储过程被Windows计划调用。
CREATE PROCEDURE [dbo].[usp_BackupDatabase]
@databaseName sysname,@backupPath nvarchar(255), @backupType CHAR(1)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sqlCommand NVARCHAR(1000)
DECLARE @dateTime NVARCHAR(20)
SELECT @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),111),'/','') +
REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')
IF @backupType = 'F'
SET @sqlCommand = 'BACKUP DATABASE [' + @databaseName +
'] TO DISK = '''+@backupPath+'\' + @databaseName + '_Full_' + @dateTime + '.BAK'''
IF @backupType = 'D'
SET @sqlCommand = 'BACKUP DATABASE [' + @databaseName +
'[ TO DISK = '''+@backupPath+'\'+ @databaseName + '_Diff_' + @dateTime + '.BAK'' WITH DIFFERENTIAL'
IF @backupType = 'L'
SET @sqlCommand = 'BACKUP LOG [' + @databaseName +
'[ TO DISK = '''+@backupPath+'\' + @databaseName + '_Log_' + @dateTime + '.TRN'''
EXECUTE sp_executesql @sqlCommand
END