sql server 三千,Log.LDF文件丢失,附加数据库退步的化解办法[转]

  SQL Server数据库备份有三种格局,一种是行使BACKUP
DATABASE将数据库文件备份出去,别的一种正是平素拷贝数据库文件mdf和日志文件ldf的主意。上面将第二钻探一下后者的备份与回复。本文假定你能熟习使用SQL
Server Enterprise Manager(SQL Server企管器)和SQL Server Quwey
Analyser(SQL Server查询分析器)

壹 、不奇怪的备份、苏醒措施
  符合规律形式下,大家要备份一个数据库,首先要先将该数据库从运维的数量服务器中断开,只怕停掉整个数据库服务器,然后复制文件。

  卸下数据库的吩咐:Sp_detach_db 数据库名

总是数据库的通令:Sp_attach_db或者sp_attach_single_file_db
-SQL
s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′
[,…16]
sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =]
′physical_name′

  使用此方法能够正确恢复SQL Sever7.0和SQL Server
3000的数据库文件,要点是备份的时候自然要将mdf和ldf七个公文都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

例子:
  倘使数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。上边大家研究一下怎么着备份、复苏该数据库。
卸下数据库:
-SQL
sp_detach_db ‘test’

延续数据库:
-SQL
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’

贰 、唯有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’ 的新日志文件。

sql server 两千,Log.LDF文件丢失

  若是你的数据库文件是从别的电脑上复制过来的,那么很不幸,大概上述措施就不算了。你大概会拿走近似上面包车型客车错误新闻
服务器: 消息 1813,级别 16,状态 2,行 1
决不能打开新数据库 ‘test’。CREATE DATABASE 将告一段落。
配备激活错误。物理文件名 ‘d:\test_log.LDF’ 大概有误。
  如何是好呢?别着急,上面大家举例表明复苏措施。
  A.我们利用默许格局建立3个供苏醒行使的数据库(如test)。能够在SQL
Server Enterprise Manager里面建立。

  B.停掉数据库服务器。

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

  D.运维数据库服务器。此时会看出数据库test的动静为“置疑”。那时候无法对此数据库进行别的操作。

SQL Server,  E.设置数据库允许直接操作系统表。此操作能够在SQL Server Enterprise
Manager里面“工具-》SQL
Server配置属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也能够选择如下语句来完成。
-SQL
use master
go
sp_configure ‘allow updates’,1
go
reconfigure with override
go

  F.设置test为紧迫修复形式
-SQL
update sysdatabases set status=-32768 where dbid=DB_ID(‘test’)

那会儿得以在SQL Server Enterprise
Manager里面看到该数据库处于“只读\置疑\脱机\时不小编待情势”能够看看数据Curry面的表,不过单纯有系统表

  G.上边执行真正的东山再起操作,重建数据库日志文件
-SQL
dbcc rebuild_log(‘test’,’C:\Program Files\Microsoft SQL
Server\MSSQL\Data\test_log.ldf’)

实施进度中,假若赶上下列提醒音信:
服务器: 消息 5030,级别 16,状态 1,行 1
不许排它地锁定数据库以履行该操作。
DBCC 执行完结。要是 DBCC 输出了错误消息,请与系统管理员联系。[brown]
  表达你的其余程序正在利用该数据库,假如刚才你在F步骤中利用SQL Server
Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise
Manager就足以了。
  正确履行到位的提醒应该接近于:
告诫: 数据库 ‘test’ 的日记已重建。已失去工作的一致性。应运作 DBCC
CHECKDB
以证实物理一致性。将必须重置数据库选项,并且大概须要删除多余的日记文件。
  DBCC 执行实现。要是 DBCC 输出了错误音信,请与系统一管理理员联系。
那儿开拓在SQL Server Enterprise
Manager里面会看出数据库的处境为“只供DBO使用”。此时能够访问数据Curry面包车型地铁用户表了。

  H.验证数据库一致性(可归纳)
-SQL
dbcc checkdb(‘test’)

貌似实施结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 ‘test’ 中)。
DBCC 执行达成。假设 DBCC 输出了错误新闻,请与系统一管理理员联系。

  I.设置数据库为通常意况
-SQL
sp_dboption ‘test’,’dbo use only’,’false’

  假诺没有出错,那么恭喜,现在就能够寻常的施用苏醒后的数据库啦。

  J.最终一步,大家要将步骤E中设置的“允许对系统目录直接改动”一项苏醒。因为平时径直操作系统表是一件相比较危险的业务。当然,大家得以在SQL
Server Enterprise Manager里面复苏,也可以动用如下语句实现
-SQL
sp_configure ‘allow updates’,0
go
reconfigure with override
go

相关文章