`
morris
  • 浏览: 179034 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

詳解SQL Server数据库备份的兩种方式

阅读更多
SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用SQL Server EntERPrise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)

1、正常的备份、SQL数据库恢复方式
正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。
卸下数据库的命令:Sp_detach_db 数据库名
连接数据库的命令:
Sp_attach_db或者sp_attach_single_file_db
s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′[,...16]
sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′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 'test',
'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
未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。

怎么办呢?别着急,下面我们举例说明恢复办法。
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。

B.停掉数据库服务器。

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

D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。

E.设置数据库允许直接操作系统表。此操作可以在SQL Server EntERPrise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go

F.设置test为紧急修复模式:
update sysdatabases set status=-32768 where dbid=DB_ID('test')
  此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表

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 Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。

正确执行完成的提示应该类似于:
  警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
  DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
  此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。

H.验证数据库一致性: dbcc checkdb('test')
一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。

J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成:
sp_configure 'allow updates',0
go
reconfigure with override
go



分享到:
评论

相关推荐

    SQL_Server_2008维护计划实现数据库定时自动备份

    在SQL Server 2008中,实现数据库定时自动备份主要依赖于两种方法:使用SQL Server Agent作业和利用维护计划。下面将详细阐述这两种方法。 ##### 使用SQL Server Agent作业进行数据库备份 这种方法涉及到创建一个...

    Excel+SQL Server 数据库管理技术详解配套光盘

    该书通过配套光盘提供的各个章节内容,帮助读者掌握这两种工具的集成应用,提升数据分析能力。以下是根据光盘包含的章节内容概述的一些关键知识点: 1. **第3章:Excel基础与数据处理** - 学习Excel的基本操作,如...

    SqlServer数据库性能优化详解

    ### SqlServer数据库性能优化详解 #### 一、性能优化的重要性 在现代企业的信息化建设中,数据库作为信息系统的核心组件,其性能直接影响着应用系统的整体表现。性能优化的目标是通过减少网络流量、磁盘I/O操作...

    SQL Server数据库备份和恢复措施

    ### SQL Server数据库备份和恢复措施 #### 一、备份数据库 **步骤详解:** 1. **启动SQL Server企业管理器:** - 打开SQL Server企业管理器,它通常位于开始菜单中的“Microsoft SQL Server”文件夹内。 - 在...

    易语言源码sql数据库备份恢复.rar

    《易语言源码SQL数据库备份恢复详解》 在IT领域,数据备份与恢复是至关重要的环节,它确保了系统在遭遇故障或意外情况时能够快速恢复到正常状态,避免重要数据丢失。本篇将深入探讨易语言源码实现的SQL数据库备份与...

    Excel...SQL Server 数据库管理技术详解 excel and sql

    在IT行业中,Excel和SQL Server是两种非常重要的数据管理和分析工具。Excel以其强大的电子表格功能,成为个人和团队处理日常数据的首选,而SQL Server作为一款企业级的关系型数据库管理系统,能够存储、管理和分析...

    sqlserver数据库镜像

    SQL Server 数据库镜像配置步骤详解 数据库镜像是一种高可用性解决方案,通过在两个或多个服务器上配置镜像,可以提高数据库的可用性和可靠性。本文将详细介绍 SQL Server 数据库镜像的配置步骤。 前期准备 在...

    sqlserver数据库详解.rar

    SQL Server数据库是一个全面的企业级数据管理系统,由微软公司开发,广泛应用于各种规模的企业中,用于存储、管理和处理数据。本文将深入探讨SQL Server的核心概念、功能特性以及如何进行操作。 一、SQL Server概述...

    sql数据库自动备份方法

    以上两种方法,无论是使用数据库维护计划器还是作业调度,都能有效实现SQL数据库的自动备份,从而保障数据安全。企业或组织应根据自身需求和技术条件,选择最合适的方法实施自动备份策略。同时,建议定期检查备份的...

    SQL Server数据库文件恢复技术

    在SQL Server中,备份数据库主要有两种方式: - **使用BACKUP DATABASE命令**:这种方式是通过SQL Server提供的备份机制来进行的,可以完整备份数据库的所有文件和日志。 - **直接拷贝数据库文件**:即直接复制...

    《Excel+SQL Server 数据库管理技术详解》【随书附盘】

    《Excel+SQL Server 数据库管理技术详解》是一本深度探讨如何结合使用Excel和SQL Server进行高效数据管理和分析的专业书籍。本书旨在帮助读者掌握这两种工具的综合应用,提升数据处理能力,实现更强大的数据分析和...

    sqlserver数据库置疑的种解决方法.doc

    ### SQL Server 数据库置疑解决方法详解 #### 方法一:重置状态并移除日志文件 当SQL Server 2000中的数据库出现置疑状态时,可以通过以下步骤进行修复: 1. **停止SQL Server服务**:确保SQL Server当前处于停止...

    SQL SERVER 数据库修复

    SQL Server 提供了多种数据库备份和恢复的方法,其中两种常用的技术是使用 `BACKUP DATABASE` 命令进行备份和直接拷贝 `.mdf`(主数据文件)和 `.ldf`(事务日志文件)。 #### 二、备份与恢复方法 ##### 1. 使用 `...

    SQL Server 2008 数据库同步的两种方式 (发布、订阅)

    ### SQL Server 2008 数据库同步的两种方式(发布、订阅) #### 一、概述 在数据库管理中,为了实现数据的一致性和高可用性,常常需要对多个数据库实例进行同步处理。SQL Server 2008 提供了多种数据库同步方案,...

    C#语言和SQLServer数据库技术.zip

    《C#语言与SQL Server数据库技术详解》 在IT领域,C#语言和SQL Server数据库技术是两个不可或缺的重要组成部分。C#(读作"C Sharp")是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台上的软件...

    sql server 2008 创建数据库 详解

    在SQL Server 2008中,用户需要掌握创建数据库的两种方法,一种是通过图形界面的SQL Server Management Studio,另一种是使用Transact-SQL语句,如CREATE DATABASE命令。 通过本章的学习,用户能够全面了解SQL ...

    sql server 2008 数据的备份与恢复 详解

    "SQL Server 2008 数据的备份与恢复详解" 在 SQL Server 2008 中,数据库备份与恢复是数据库管理员需要...SQL Server 2008 提供了 4 种数据库备份类型:完整数据库备份、差异数据库备份、事务日志备份和文件组备份。

Global site tag (gtag.js) - Google Analytics