SqlServer2005/2008备份模式与恢复模式 3copy数据库文件,另一种备份与恢复方式
2010-01-20 23:03
417 查看
SQL Server允许使用简单的Copy方式来备份数据库的数据和日志文件吗?答案是肯定的。但前提是数据文件不再被SQL Server使用。
当数据库处于活动状态,你不能简单的copy它的文件,推荐方式是使用完整数据库备份(备份模式)。这是因为数据库的数据和日志文件不能处于非一致状态。这会导致仅仅在事务日志中被修改的数据页可能无法写入数据文件。这也会影响进程中的事务无法提交或是回滚已经写入文件中的数据。
下面是一个简单的例子:
你最后一步是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数据文件。而且,你也不能使用附加的数据库作为差异备份和事务日志备份的起始点。
当数据库处于活动状态,你不能简单的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一个已经被其他应用程序打开的文件,这种方式是非常有用的,但如上所述,这种方式好像并不适用于备份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数据文件。而且,你也不能使用附加的数据库作为差异备份和事务日志备份的起始点。
相关文章推荐
- RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复
- 使用NBUnocatalog方式备份的数据库从磁带机中恢复控制文件
- Oracle之rman数据库在非归档模式下的备份和恢复
- Oracle Export方式数据库备份和恢复(一)
- 数据库的备份与恢复 mysqldump+binlog方式
- linux下mysql的数据库备份文件*.sql从高版本mysql恢复到低版本mysql
- rman实验之归档模式有备份,正常关机丢失控制文件的恢复
- 用WEB(ASP)方式实现SQL SERVER 数据库的备份和恢复
- 用WEB(ASP)方式实现SQL SERVER 数据库的备份和恢复
- 云计算之路-试用Azure:数据库备份压缩文件在虚拟机上的恢复速度测试
- 数据库数据文件有备份的恢复 ORA-01157 【续+1】
- 数据库文件备份与恢复案例
- SQL Server 恢复模式、备份方式和还原方式之间的简单关系
- 归档模式无备份情况下数据库的恢复
- Oracle-->数据库备份与恢复-->数据库归档模式设置
- MongoDB数据库的文件备份恢复以及文件导入导出
- MongoDB数据库的文件备份恢复以及文件导入导出
- MongoDB数据库的文件备份恢复以及文件导入导出
- Sql server恢复数据库时出错,错误:3212,提示说“备份文件有两个媒体簇,但是只提供了1个 【解决办法】
- oracle用备份的控制文件恢复后不用resetlogs打开方式的恢复