小管

winner2009

   :: 首页  ::  ::  ::  :: 管理

我们知道Sql Server 企业版和标准版都可创建定时备份,很方便的,而Sql Express并没有这个功能,所以需要自己开发,思路是这样的。 

 

  1. 存储过程备份数据库。
  2. 做个批处理,利用sqlcmd执行存储计划。
  3. 利用windows计划,定时执行批处理。

 

在第二步的时候,需要你配置数据的允许远程连接。关于怎么配置请参考:

 

http://blog.csdn.net/wonsoft/article/details/4998677

 

或者

 

http://support.microsoft.com/kb/914277/  

 

存储过程如下如下:

 

 1 Create PROCEDURE [dbo].[BackDB]
 2 
 3     @DBName sysname,
 4     @bakType CHAR(1),
 5     @bakToDir NVARCHAR(500)
 6 
 7 
 8 AS
 9 BEGIN
10 
11     DECLARE @sqlCommand NVARCHAR(1000)
12 
13     DECLARE @dateTime NVARCHAR(20)
14 
15     DECLARE @bakFullPath NVARCHAR(500)
16 
17     SELECT @dateTime=REPLACE(CONVERT(VARCHAR,GETDATE(),111),'/','')+REPLACE(CONVERT(VARCHAR,GETDATE(),108),':','')
18 
19     IF @bakType='F'
20 
21         BEGIN
22 
23         SET @bakFullPath = @bakToDir + @DBName + '_Full_' + @dateTime +'.BAK'
24 
25         SET @sqlCommand='BACKUP DATABASE ' + @DBName + ' TO DISK = ''' + @bakFullPath +''''
26 
27         END
28 
29     IF @bakType='D'
30 
31         BEGIN
32 
33         SET @bakFullPath = @bakToDir + @DBName + '_Diff_' + @dateTime + '.BAK'
34 
35         SET @sqlCommand='BACKUP DATABASE ' + @DBName + ' TO DISK = ''' + @bakFullPath + ''' WITH DIFFERENTIAL'
36 
37         END
38 
39     IF @bakType='L'
40 
41         BEGIN
42 
43         SET @bakFullPath = @bakToDir + @DBName + '_Log_' + @dateTime + '.TRN'
44 
45         SET @sqlCommand='BACKUP LOG ' + @DBName + ' TO DISK = ''' + @bakFullPath + ''''
46 
47         END
48 
49 
50     EXECUTE sp_executesql @sqlCommand
51 

52 END 

 

执行存储过程(创建一个sql文件,比如:a.sql)

 

 

Use 数据库名称

EXEC BackDB N'数据库名称',N'F',N'D:\data\a\';

 

 

 新建一个批处理文件,利用sqlcmd 登录数据库并且执行我们的文件(a.sql) 

 

 sqlcmd -S .\SQLEXPRESS --i a.sql   

 

创建一个记事本,吧上面的命令拷贝粘贴,修改扩展名为bat.  比如:a.bat 

 

参数介绍:

-E   : 使用可信任连接,而不是用户名和密码登录。

-S  :ServerName.  我在这里吃了亏,花费了好几个小时;  如果你的电脑对端口做了修改,同样要添加端口,比如改成这样:127.0.0.1:40000\SQLEXPRESS

-i  : 执行的文件名。 

 

关于sqlcmd更多参数请看这里

 

 一切准备就绪,下面是做个windows计划任务。

 

 开始 》  所有程序 》 附件》 系统工具》 任务计划

 

这个界面很简单,选择a.bat文件。什么时间执行。OK!

 

如果有更方便的方案,大家提出来。谢谢! 

 

 

posted on 2012-03-30 15:54  管宇  阅读(568)  评论(4编辑  收藏  举报