我装的是sql2005 express 版本的没有sql代理也没有维护计划功能,我按网上找的方法创建了windows计划任务,操作步骤如下:
1. 首先建立一个windows任务计划,打开任务计划向导,选择指定的的exe文件,该文件名为backup.cmd(此文件内容:sqlcmd -S .\SQLEXPRESS -E -i F:\Backup\Backup.sql)。Backup.sql 文件内容为:
exec [sp_BackupDatabase] 'urtracker','F'go注:.\SQLEXPRESS 是你的数据库实例, F:\Backup\Backup.sql 磁盘位置可任意更改。urtracker 是我要备份的bug跟踪系统的数据库。2. 然后选择执行周期,假设选择每天上午9点,接着输入Windows用户名和密码。3.在任务计划向导完成前勾选 “在单击完成时,打开此任务的高级属性”这个CheckBox。4.在Master数据库内执行查询后会添加一个存储过程,该存储过程被Windows计划调用。
查询语句为:USE [master]
GO
/****** Object: StoredProcedure [dbo].[sp_BackupDatabase] Script Date: 14/07/2011 14:40:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author: RyanDing
-- Create date: 2010-10-10
-- Description: 备份数据库
-- Parameter1: 数据库名
-- Parameter2: 备份类型 F=全部, D=差异, L=日志
-- =============================================
CREATE PROCEDURE [dbo].[sp_BackupDatabase]
@databaseName sysname, @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 = ''F:\Backup\' + @databaseName + '_Full_' + @dateTime + '.BAK'''
IF @backupType = 'D'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ''F:\Backup\' + @databaseName + '_Diff_' + @dateTime + '.BAK'' WITH DIFFERENTIAL'
IF @backupType = 'L'
SET @sqlCommand = 'BACKUP LOG ' + @databaseName +
' TO DISK = ''F:\Backup\' + @databaseName + '_Log_' + @dateTime + '.TRN'''
EXECUTE sp_executesql @sqlCommand
END
go5.执行计划任务,查看F:\Backup\中备份的数据库。到设置的时间或者手动执行计划任务都没有产生备份文件。请帮我看下有什么地方要改?
1. 首先建立一个windows任务计划,打开任务计划向导,选择指定的的exe文件,该文件名为backup.cmd(此文件内容:sqlcmd -S .\SQLEXPRESS -E -i F:\Backup\Backup.sql)。Backup.sql 文件内容为:
exec [sp_BackupDatabase] 'urtracker','F'go注:.\SQLEXPRESS 是你的数据库实例, F:\Backup\Backup.sql 磁盘位置可任意更改。urtracker 是我要备份的bug跟踪系统的数据库。2. 然后选择执行周期,假设选择每天上午9点,接着输入Windows用户名和密码。3.在任务计划向导完成前勾选 “在单击完成时,打开此任务的高级属性”这个CheckBox。4.在Master数据库内执行查询后会添加一个存储过程,该存储过程被Windows计划调用。
查询语句为:USE [master]
GO
/****** Object: StoredProcedure [dbo].[sp_BackupDatabase] Script Date: 14/07/2011 14:40:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author: RyanDing
-- Create date: 2010-10-10
-- Description: 备份数据库
-- Parameter1: 数据库名
-- Parameter2: 备份类型 F=全部, D=差异, L=日志
-- =============================================
CREATE PROCEDURE [dbo].[sp_BackupDatabase]
@databaseName sysname, @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 = ''F:\Backup\' + @databaseName + '_Full_' + @dateTime + '.BAK'''
IF @backupType = 'D'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ''F:\Backup\' + @databaseName + '_Diff_' + @dateTime + '.BAK'' WITH DIFFERENTIAL'
IF @backupType = 'L'
SET @sqlCommand = 'BACKUP LOG ' + @databaseName +
' TO DISK = ''F:\Backup\' + @databaseName + '_Log_' + @dateTime + '.TRN'''
EXECUTE sp_executesql @sqlCommand
END
go5.执行计划任务,查看F:\Backup\中备份的数据库。到设置的时间或者手动执行计划任务都没有产生备份文件。请帮我看下有什么地方要改?
ackup.sql
消息 102,级别 15,状态 1,服务器 TEST44\SQLEXPRESS,第 1 行
'go' 附近有语法错误。C:\Documents and Settings\Administrator>exec [sp_BackupDatabase] 'urtracker','F'go
这句后面的go有语法错误吗
(C) 版权所有 1985-2003 Microsoft Corp.C:\Documents and Settings\Administrator>sqlcmd -S .\SQLEXPRESS -E -i F:\Backup\B
ackup.sql
消息 102,级别 15,状态 1,服务器 TEST44\SQLEXPRESS,第 1 行
'go' 附近有语法错误。C:\Documents and Settings\Administrator>sqlcmd -S .\SQLEXPRESS -E -i F:\Backup\B
ackup.sql
已为数据库 'urtracker',文件 'urtracker' (位于文件 1 上)处理了 520 页。
已为数据库 'urtracker',文件 'urtracker_log' (位于文件 1 上)处理了 8 页。
BACKUP DATABASE 成功处理了 528 页,花费 0.560 秒(7.717 MB/秒)。C:\Documents and Settings\Administrator>
哦呵呵呵呵,解决了我把exec [sp_BackupDatabase] 'urtracker','F'go
语句里的go换了下行就可以了
谢谢大家