当前位置:  开发笔记 > 编程语言 > 正文

SQL Server自动备份

如何解决《SQLServer自动备份》经验,为你挑选了3个好方法。

用于创建SQL Server 2008数据库自动备份的软件产品有哪些建议?

应该在不使数据库脱机/分离的情况下进行备份.



1> Eduardo Molt..:

如果您使用的是SQL Server Express,则无法找到运行定期备份的UI.
在这种情况下,您必须使用Windows计划任务或类似的东西运行批处理.

不要忘记使用具有足够权限的用户来访问SQL Server.

在批处理文件中

"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S 
(local)\SQLExpress -i D:\dbbackups\SQLExpressBackups.sql

在SQLExpressBackups.sql中

BACKUP DATABASE MyDataBase1 TO  DISK = N'D:\DBbackups\MyDataBase1.bak' 
WITH NOFORMAT, INIT,  NAME = N'MyDataBase1 Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

BACKUP DATABASE MyDataBase2 TO  DISK = N'D:\DBbackups\MyDataBase2.bak' 
WITH NOFORMAT, INIT,  NAME = N'MyDataBase2 Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO



2> cmsjr..:

我建议只在SQL Server中创建一个维护计划来处理备份,它可以配置为在指定时间备份到指定位置,而不会使数据库脱机,并将处理增量备份清理.

http://msdn.microsoft.com/en-us/library/ms189715.aspx



3> akc42..:

我曾经挣扎过一段时间,因为如何制作一个制作不同名字的文件的政权并不明显,因此一次运行并没有过度写另一个.最后,它创建了以下Windows批处理文件

:: Daily Backup of SQLSERVER databases

:: AKC 30 Apr 2011

::

:: Set environment variables

SET SQLCMDPASSWORD=xxxxxx
SET BACKUPDIR=C:\backups\db\

SET SCRIPTDIR=D:\Public\DB\batch_scripts\

:: Issue backup commands from a sql script

SQLCMD -U a_backup -S SERVER\SQLEXPRESS -i %SCRIPTDIR%daily_backup.sql

:: Tidy Up Old Backup Files (keep for 5 days)

FORFILES /P %BACKUPDIR% /S /M "*.bak" /D -5 /C "cmd /c del @path"

其中a_backup是具有备份权限的sqlserver登录.对应的sql是

DECLARE @thistime nvarchar(25);

DECLARE @filename nvarchar(255);

SET @thistime = CONVERT(nvarchar,GETDATE(),126);

SET @filename = "$(BACKUPDIR)" + N'PASL' + SUBSTRING(@thistime,1,10) + N'_DB.bak';

BACKUP DATABASE DB_live

    TO DISK = @FILENAME

    WITH INIT;

GO

发现用于清除旧文件的"FORFILES"命令对我来说是关键的发现.

事务日志等价物是

:: Transaction Log Backups of SQLSERVER databases

:: AKC 30 Apr 2011

:: Run at reasonably spread out times of the day

:: Set environment variables

SET SQLCMDPASSWORD=xxxxxx
SET BACKUPDIR=C:\backups\db\
SET SCRIPTDIR=D:\Public\DB\batch_scripts\

:: Issue backup commands from a sql script

SQLCMD  -U a_backup -S SERVER\SQLEXPRESS -i %SCRIPTDIR%tlog_backup.sql

用sql文件

DECLARE @thistime nvarchar(25);

DECLARE @filename nvarchar(255);

SET @thistime = CONVERT(nvarchar,GETDATE(),126);

SET @filename = "$(BACKUPDIR)" + N'PASL' + SUBSTRING(@thistime,1,10) + SUBSTRING(@thistime,11,3) + N'_LOG.bak';

BACKUP LOG DB_live

    TO DISK = @FILENAME

    WITH INIT;

GO

我应该注意数据库文件在我的D:驱动器上,这就是我将备份带到C:驱动器的原因.

每日备份作为Windows任务计划程序中的作业输入,每天凌晨4:00运行.事务日志备份设置为每天上午8:00运行,并在13小时后每4小时重复一次(使其在每天中午8点,下午4点和晚上8点运行)

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有