`

备份数据库方法

 
阅读更多
--设置数据库为单用户
alter database auditsystem set single_user with rollback immediate;
--卸载数据库
sp_detach_db 'auditsystem '

--附加数据库
sp_attach_db 'auditsystem ','d:\database\auditsystem.mdf','d:\database\auditsystem_log.ldf';


--备份数据库到硬盘
backup database AuditSystem to disk=‘d:\database\AuditSystem .Bak' ;

--还原硬盘的数据库备份
restore database AuditSystem from disk=d:\database\AuditSystem.Bak'
with move 'AuditSystem' to d:\database\AuditSystem.mdf',
move 'AuditSystem_Log' to d:\database\AuditSystem_Log.ldf'



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就可以了。

  正确执行完成的提示应该类似于:(此文章由飞客数据恢复中心搜集http://www.cellma.com.cn)

  警告: 数据库 '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

备注:使用restore database 恢复数据库分四步走
//1:设置要恢复的数据库为单用户模式,
//2:删除要恢复的数据库
//3:检查目的地的数据库文件(将要恢复生成的数据文件和日志文件)是否存在,存在就删除
//4:恢复数据库
分享到:
评论

相关推荐

    mysql自动定时备份数据库的方法

    MySQL 自动定时备份数据库的方法 MySQL 是一个流行的开源关系数据库管理系统,随着数据量的增加,数据库的备份变得越来越重要。备份数据库可以保护数据的安全和完整性,避免数据丢失或损坏。MySQL 自动定时备份...

    批量备份数据库.SQL

    作为数据库管理员,或者是软件公司的项目经理经常面临着这个问题,一个数据库一个数据库的备份太累,通过上面的一个存储过程,能够批量备份系统中的所有数据库

    mysql mariadb 备份数据库方法 批命令导出sql方法,带winrar最大压缩、恢复记录 Windows 平台 参数化

    本篇文章将深入探讨如何在Windows平台上使用批处理命令高效地备份数据库,并结合WinRAR进行最大压缩,以及如何恢复这些备份。我们将涵盖以下几个关键知识点: 1. **MySQL与MariaDB备份**:MySQL和MariaDB提供了多种...

    自动备份数据库程序

    标题中的“自动备份数据库程序”指的是一个专门为解决SQL Server 2008和2012 Express版本缺乏自动备份功能而设计的应用程序。在SQL Server的Express版本中,虽然提供了强大的数据库管理工具,但默认情况下并不包含...

    tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作

    tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份...

    小葵备份数据库利用工具

    【小葵备份数据库利用工具详解】 小葵备份数据库利用工具是一款由小葵开发的专业数据库备份软件,主要针对具有db_owner权限的用户设计。在数据库管理领域,数据安全和备份是至关重要的环节,这款工具旨在帮助管理员...

    自动备份数据库java源码

    标题中的“自动备份数据库java源码”指的是使用Java编程语言编写的一种程序,它的主要功能是自动化执行数据库的备份任务。数据库备份是数据保护的重要环节,它可以在数据丢失或系统故障时恢复数据,确保业务连续性。...

    sql server自动备份数据库

    SQL Server 自动备份数据库 SQL Server 自动备份数据库是指通过设置代理来自动备份数据库文件的过程。下面是相关的知识点: SQL Server 代理 SQL Server 代理是 SQL Server 的一部分,负责执行预定义的作业,例如...

    使用C#编写代码的备份数据库

    描述部分提到:“备份数据库,如果不会备份数据库的朋友可以参照……是用C#编程代码编写的备份数据库不再单一使用SQL进入的备份数据库了!”这段话强调了以下几点: 1. **目的**:通过C#程序实现数据库备份。 2. **...

    如何备份还原oracle数据库

    本文将根据给定的信息“如何备份还原oracle数据库”,详细介绍备份与恢复Oracle数据库的方法与步骤。 ### 一、Oracle数据库备份的重要性 在日常维护工作中,由于硬件故障、人为操作失误或系统崩溃等原因,可能会...

    备份数据库服务器数据库(源代码C#的)

    标题中的“备份数据库服务器数据库(源代码C#的)”是指使用C#编程语言实现的数据库备份功能。在IT行业中,数据库备份是确保数据安全的重要环节,它允许在数据丢失或系统故障时恢复数据。C#是一种广泛使用的编程语言...

    备份数据库程序,选择Access数据库,选择数据库备份的路径的例子(VB6.0源代码编写)

    7. **VB2010-03-06-备份数据库**:这个文件名可能表示这是一个在2010年3月6日创建的VB项目,专注于数据库备份功能。它可能是源代码文件、项目文件或者是关于这个话题的文档。 在实际应用中,一个完整的数据库备份...

    备份数据库-备份网站-打开网站脚本代码以及注意事项

    备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项

    ssms备份数据库-龙谷情.docx

    标题中的“ssms备份数据库-龙谷情.docx”指的是使用SQL Server Management Studio (SSMS)工具对数据库进行备份操作的文档。描述中提到的方法是通过SSMS将数据库备份为.bak格式,并随后载入该备份文件进行数据恢复。...

    thinkphp3.2.2备份数据库插件

    《ThinkPHP3.2.2备份数据库插件详解》 在Web开发中,数据库的备份与恢复是一项至关重要的任务,特别是在使用PHP框架进行项目开发时。ThinkPHP作为国内广泛使用的PHP框架之一,提供了丰富的功能来简化开发过程。本文...

    服务器上自动备份数据库

    本文将深入探讨“服务器上自动备份数据库”的概念、实现方法以及相关知识点。 1. 自动备份的重要性: 数据备份是为了防止数据丢失,无论是由于硬件故障、软件错误、恶意攻击还是自然灾害。自动备份通过设定定期...

    window自动备份mysql数据库

    window每天定时备份数据库到硬盘指定目录下,#-uluotao 指定用户名luotao #-p 指定明码 #--databases houtai 指定备份houtai这个数据库,可以指定多个备份的数据库 # > d:/back3.sql 指定备份文件的路径

    Thinkphp数据库备份和还原

    1. **Thinkphp内置备份功能**:Thinkphp框架提供了一些内置的方法来帮助开发者备份数据库。这些方法通常位于`Think\Db`类中,可以通过编写控制器或服务层的代码调用。例如,你可以创建一个脚本,遍历所有表并执行SQL...

    在SQL2005实现维护计划-备份数据库

    在SQL Server 2005中,数据库的备份是数据管理的重要环节,它确保了数据的安全性和可恢复性。本文将深入探讨如何在SQL ...因此,对数据库管理员来说,掌握在SQL Server 2005中实现维护计划和备份数据库的方法至关重要。

    testlink-数据库备份迁移.docx

    TestLink 数据库备份迁移 ...本文详细介绍了 TestLink 数据库备份迁移的步骤和方法,包括修改数据库密码、备份数据库、恢复数据库、自动备份脚本和官方指导。这些步骤可以确保 TestLink 数据库的安全和可靠性。

Global site tag (gtag.js) - Google Analytics