微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SqlServer2005/2008备份模式与恢复模式 3copy数据库文件,另一种备份与恢复方式

sql Server允许使用简单的copy方式来备份数据库的数据和日志文件吗?答案是肯定的。但前提是数据文件不再被sql Server使用。

数据库处于活动状态,你不能简单的copy它的文件,推荐方式是使用完整数据库备份(备份模式)。这是因为数据库的数据和日志文件不能处于非一致状态。这会导致仅仅在事务日志中被修改的数据页可能无法写入数据文件。这也会影响进程中的事务无法提交或是回滚已经写入文件中的数据。

下面是一个简单的例子:

10:00 copying of data files start,takes 10 minutes.
10:05 A checkpoint occurs,modifies some pages at the beginning of the data file (which have already been copied),and some pages at the end of the data file (yet to be copied).
10:10 copying of data files end,copy of transaction log starts.
10:15 copying of transaction log ends.

你最后一步是copy事务日志,这就意味着数据文件已经包括了最后一次checkpoint以后的所有更改,但是实际上数据文件仅仅包括部分更改。

 

copy一个已经被其他应用程序打开的文件,这种方式是非常有用的,但如上所述,这种方式好像并不适用于备份sql Server数据库。假如你必须使用copy方式来替换普通的数据库备份方式的话,推荐的方式是使用sp_detach_db存储过程来分离数据库:

sp_detach_db 'AdventureWorks'

sql Server在把数据库sql Server实例上分离下来之前,会把所有的脏页都写回磁盘。然后,你就可以copy数据库文件了,这时数据库文件也是处于一致性状态的。然后,你可以使用sp_attach_db来重新附加数据库:

sp_attach_db 'AdventureWorks','e:/mssql_data/AdventureWorks/AdventureWorks.mdf','e:/mssql_data/AdventureWorks_log.ldf'

假如你的数据库仅仅由数据文件组成,而且再也不需要事务日志文件了,那么使用sp_attach_single_file_db存储过程:

sp_attach_single_file_db 'AdventureWorks','e:/mssql_data/AdventureWorks/AdventureWorks.mdf'

数据库实例处于离线状态时,你也可以安全的copy数据库文件

copy数据库文件这种方式的主要略势是,你不得不把数据库离线一段时间,以便你来copy数据文件。而且,你也不能使用附加的数据库作为差异备份和事务日志备份的起始点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐