Sql2005以上重建事务⽇志⽂件
有时候我们⼿头上的数据库可能只剩下了mdf⽂件,⽽⽇志⽂件丢失了或者损坏了,
那么你可以尝试使⽤以下⽅法重建事务⽇志,注意sql 2Q不是这个语句
USE master;
GO
CREATE DATABASE nuke
ON
(FILENAME = 'H:\Mdf-BackUp\Nuke.mdf') --数据库⽂件所在
sqlserver备份表语句---,(FILENAME = 'H:\Mdf-BackUp\Nuke_Log.ldf')---指定重建的⽇志⽂件路径
FOR ATTACH_REBUILD_LOG
GO
当服务器因为硬件失败导致数据库失效时,可能出现以下错误:
⽂件激活失败。物理⽂件名称'f:\database\MyDb\MyDb_log.ldf'可能不正确。
由于数据库没有完全关闭,⽆法重新⽣成⽇志。
(其实这⾥需要注意的是,请在该位置⽣成这个⽂件.)
可以尝试如下操作
强制附加数据库
a)        新建⼀个同名数据库
CREATE DATABASE [MyDb_temp]
ON (NAME=MyDb_temp,FILENAME = N'F:\temp\MyDb.mdf' )
LOG ON (NAME=MyDb_temp_Log, FILENAME = N'F:\temp\MyDb_log.ldf')
b)        停⽌SqlServer
c)        将备份的数据库覆盖F:\temp\MyDb.mdf
d)        启动SqlServer,(MyDb_temp将变为不可⽤)
查看数据库状态
SELECT * FROM SYS.DATABASES
SELECT * FROM sys.database_recovery_status
e)        将数据库改为紧急恢复模式
ALTER  DATABASE  MyDb  SET  EMERGENCY
f)  修复数据库
DBCC CheckDB ('MyDb')
g)        将数据库改为但⽤户模式
ALTER  DATABASE  MyDb  SET  SINGLE_USER
h)        再带参数修复数据库
DBCC CheckDB ('MyDb',  REPAIR_REBUILD)---此处请注意, REPAIR_REBUILD可能⽆效,我改⽤了REPAIR_ALLOW_DATA_LOSS参数,如此操作下去就不需要去执⾏第⼆步了;
i)          将数据库改为正常模式
ALTER  DATABASE  MyDb  SET  ONLINE
如果⽆法创建数据库⽇志,i步骤将失败,这时候如果能看到数据库表,和进⾏Select操作,转第2步。
如果⼀切成功了,但是实际看数据库属性可能发现,⽇志⽂件在另外⼀个地⽅,此时可以把数据库进⾏分离,分离的时候请钩选("删除连接")选项,删除对应路径下的⽇志⽂件,然后按照⽂章开头的办法重建⽇志.那样数据库⽂件和⽇志⽂件就在⼀起了.
2.        提取数据库数据
a)  创建⼀个新的临时数据库
b)  导出数据
执⾏ SELECT 'SELECT * INTO MyDb2..'+name+' FROM '+ name FROM sys.objects WHERE TYPE = 'U' AND name!='sysdiagrams'
产⽣数据导出语句,执⾏他们,将数据复制到新数据库
c)  导出存储过程:待续
d)  导出触发器:待续
e)  导出函数:待续
f)  导出⾃定义数据类型:待续
g)  导出⽤户:待续
h)  将新数据库还原到⽬标服务器
备份/还原这个新建的数据库到⽬标服务器
i)  修复孤⽴⽤户(SQL 2005 版)
a)  EXEC sp_change_users_login 'Auto_Fix', 'GameServer';
b)  EXEC sp_change_users_login 'Auto_Fix', 'backoffice';
c)  EXEC sp_change_users_login 'Auto_Fix', 'adminsoft'; j)          修复数据库拥有者
EXEC sp_changedbowner 'sa'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。