讲解SQLServer数据库备份的多种方式

讲解SQLServer数据库备份的多种方式,第1张

讲解SQLServer数据库备份的多种方式,第2张

备份SQL Server数据库有两种方式,一种是使用BACKUP DATABASE备份数据库文件,另一种是直接复制数据库文件mdf和日志文件ldf。下面将主要讨论后者的备份和恢复。本文假设您能熟练使用SQL Server企业管理器(SQL Server企业管理器)和SQL Server qu wey Analyst(SQL Server查询分析器)
1、正常备份和SQL数据库恢复方法。

通常,要备份数据库,我们必须首先断开数据库与正在运行的数据服务器的连接,或者停止整个数据库服务器,然后复制文件。

卸除数据库的命令:Sp_detach_db数据库名称

连接数据库的命令:

Sp_attach_db或sp_attach_single_file_db

s _ attach _ db[@ dbname =]′dbname′,[@ filename 1 =]′filename _ n′[,...16]

sp _ attach _ single _ file _ db[@ dbname =]′dbname′,[@ phys name =]′physical _ name′

该方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件。重点是备份时mdf和ldf文件都要备份。mdf文件是数据库数据文件,ldf文件是数据库日志文件。

示例:

假设数据库是test,它的数据文件是test_data.mdf,它的日志文件是test_log.ldf我们来讨论一下如何备份和恢复数据库。

卸载数据库:sp_detach_db 'test '

连接到数据库:

sp_attach_db '测试',

' c:\ Program Files \ Microsoft SQL Server \ MSSQL \ Data \ test _ Data . MDF ',

' c:\ Program Files \ Microsoft SQL Server \ MSSQL \ Data \ test _ log . ldf '

sp_attach_single_file_db 'test ',' C:\ Program Files \ Microsoft SQL Server \ MSSQL \ Data \ test _ Data . MDF '

2.只有mdf文件的恢复技术

由于种种原因,如果当时只备份了mdf文件,恢复起来会很麻烦。

如果您的mdf文件是由当前数据库生成的,那就非常幸运了。也许您可以使用sp_attach_db或sp_attach_single_file_db来恢复数据库,但会出现类似下面的消息。

设备激活错误。

文件名“c:\ program files \ Microsoft SQL server \ MSSQL \ data \ test _ log . ldf”可能不正确。

已创建名为“c:\ program files \ Microsoft SQL server \ MSSQL \ data \ test _ log . ldf”的新日志文件。

但是,如果您的数据库文件是从其他计算机上复制的,那么很遗憾,也许上述方法不起作用。您可能会收到类似以下内容的错误消息

服务器:消息1813,第16级,状态2,第1行

无法打开新数据库“测试”。创建将终止。

设备激活错误。物理文件名d:\test_log。“LDF”可能是错误的。

我该怎么办?别急,下面举个如何恢复的例子。

A.我们使用默认方法构建一个数据库(如test)进行恢复。您可以在SQL Server企业管理器中创建它。

B.停止数据库服务器。

C.删除刚刚生成的数据库的日志文件test_log.ldf,用要恢复的数据库mdf文件覆盖数据库数据文件test_data.mdf。

D.启动数据库服务器。此时,您将看到数据库测试的状态为“怀疑”。此时您无法对此数据库进行任何操作。

E.将数据库设置为允许直接操作系统表。对于此操作,您可以在SQL Server企业管理器中选择数据库服务器,右键单击并选择“属性”,然后在“服务器设置”页面中选择“允许直接修改系统目录”。也可以使用下面的语句来实现。
使用母版

sp_configure '允许更新',1

用覆盖重新配置

F.将测试设置为紧急修复模式:

更新sysdatabases set status=-32768,其中dbid=DB_ID('test ')

此时,您可以看到数据库在SQL Server企业管理器中处于“只读\怀疑\脱机\紧急模式”。您可以看到数据库中的表,但只有系统表。

G.以下是重建数据库日志文件的实际恢复操作:

dbcc rebuild_log('test ',' C:\ Program Files \ Microsoft SQL Server \ MSSQL \ Data \ test _ log . ldf ')

在执行过程中,如果您遇到以下提示信息:

服务器:消息5030,级别16,状态1,第1行未能以独占方式锁定数据库来执行此操作。

DBCC的死刑执行完毕。如果DBCC输出错误消息,请联系您的系统管理员。

说明您的其他程序正在使用该数据库。如果您刚刚在步骤F中使用SQL Server企业管理器打开了测试库的系统表,您可以直接退出SQL Server企业管理器。

正确执行的提示应该类似于:(本文由phreak数据恢复中心的http://www.cellma.com.cn收集)

警告:数据库“test”的日志已重建。事务一致性已经丢失。运行DBCC CHECKDB以验证物理一致性。必须重置数据库选项,并且可能需要删除冗余的日志文件。

DBCC的死刑执行完毕。如果DBCC输出错误消息,请联系您的系统管理员。

此时,当您在SQL Server企业管理器中打开它时,您将看到该数据库的状态为“仅限DBO”。此时,您可以访问数据库中的用户表。

H.验证数据库一致性:dbcc checkdb('test ')

总体实施结果如下:

CHECKDB在数据库“test”中发现0个分配错误和0个一致性错误。

DBCC的死刑执行完毕。如果DBCC输出错误消息,请联系您的系统管理员。

I .将数据库设置为正常状态。

sp_dboption 'test ','仅使用dbo ',' false '

如果没有错误,恭喜你,现在你可以正常使用恢复的数据库了。

J.最后,我们将恢复步骤e中设置的“允许直接修改系统目录”这一项,因为平时直接操作系统表是很危险的。当然,我们可以在SQL Server企业管理器中恢复它,或者我们可以使用以下语句:

sp_configure '允许更新',0

用覆盖重新配置

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 讲解SQLServer数据库备份的多种方式

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情