-
MSDB
置疑修复
方法一:你可以采用以下的语句进行修复
:
USE
MASTER
GO
SP_CONFIGURE
'ALLOW UPDATES',1
RECONFIGURE WITH
OVERRIDE
GO
UPDATE
SYSDATABASES SET STATUS =32768 WHERE NAME='msdb'
Go
sp_dboption 'msdb',
'single user', 'true'
Go
DBCC CHECKDB('msdb')
Go
update sysdatabases set status =28
where name='msdb'
Go
sp_configure 'allow updates', 0
reconfigure with override
Go
sp_dboption 'msdb', 'single user',
'false'
Go
方法二:
MSDB
数据库解决过程
难点:由于
MSDB
数据库不能删除,将其文件拷
出来,再次附加数据库,但新的
附加数据库不能叫
MSDB
p>
,也就是不能同名,遇到了困难。
1
p>
:
先停止整个数据库,
将该数据库的文件<
/p>
和
拷贝粘
贴出来到另一个目录下。
2
:将以上的文件再拷贝到另一个目录下,也就是说复制两次。
3
:
选择
数据库右击鼠标
--
》
所有任务
--
》
附加数据库
将复制出的一个备份文
件附加上去,
其中,数据库名称叫
MSDB1
,用户是
SA
或
ADMINISTRATOR
。
4
:将
M
SDB1
数据库备份,备份成一个文件,当时我的叫
MSDB<
/p>
。
BAK
。
<
/p>
5
:选择置疑的数据库
MSDB
,选择恢复数据库,将刚才备份出来的数据库强行恢
复到
MSDB
。
6
:问题解决,
MSDB
库又能正常使用。
完成后赶快将数据库再次备份一次。呵呵。
另附
:
SQL
SERVER
数据库置疑后恢复步骤
1
.
恢复步骤:
a.
< br>将
smlog_
文件备份到其它目录下;
b.
将源目录下的
sml
og_
文件改名为
smlog_log_
;
c.
执行以下语句修改数据库的状态:
use Master
go
update sysdatabases set status=32768
where name=’数据库名称’
--
修改
状态
go
shutdown with nowait
--
停止数据库服务器
go <
/p>
d.
退出
SQL
并在命令行模式中通过下面的代码重新启动
SQL
:
sqlservr -c -T3608 -T4022
--
安全模式启动
SQL SERVER
< br>e.
在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:
select Name,Status from
sysdatabases where Name=’ 数据库名称’
f.
执行以下代码新建日志文件:
dbcc traceon(3604)
--
跟踪
dbcc
rebuild_log(‘数据库名称’,’日志文件名称’)
--
文件名要有全路径和
扩展名
g.
将数据库置回正常状态:
update sysdatabases set status=0 where
name=’数据库名称’
h.
重
新启动数据库后执行以下语句检查数据库:
DBCC
CHECKDB --
如果执行完有错误用以下语句修复
<
/p>
i.
要修复数据库必需将数据库改为单用户模式:
Exce
sp_dboption
‘数据库名称’,’single
user’,’true’
(‘false’恢复
多用户
)
j.
执行以下语句修复数据库:
DBCC
CHECKDB(‘数据库名称’,RE
PAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DATA_LOSS
:是比较高级
的修复方式
REPAIR_FAST
:是简单快速的修复方式
相似
问题:系统重装,忘记了备份
SQL
,然后又通过数据恢复工具
找回了
mcdb_
和
mcdb_
p>
,在企业管理器上用附加数据库时提示错误
9004
,日志错误,在网上找了诸多方法,也试过建个同名空数据库然后停止
SQL
SERVER
然后覆盖掉
MDF
。
这是详细步骤
.
1.
先建一个与你要恢复的数据库名称一样的数据库。
2.
停止
sql
server,
把你的数据库替换这个数据库。
3.
重启
sql
server,
把数据库设置为紧急状态。
sp_configure 'allow',1
reconfigure with overirde
update sysdatabases set
status=32768 where name='yourdata'
4.
重建日志文件。
dbcc rebuild_log('yourdata','your data
pathnewdata_')
5.
取消紧急模式。
update sysdatabases set status=0 where
name='yourdata'
restore sysdatabases
yourdata with recovery
sp_configure
'allow',0
reconfigure with override
6.
重起
sql server
22:09:21
|
只看该作者
|
倒序浏览
SQL
数据库置疑解决方案
一、数据库置疑产生的原因
1
、
SQL
Server
所在分区空间是否够?
数据库文件大小是否达到最大文件限制?
FAT32
的格式只支持
4G
以内
的文件。
2
、数据库文件损坏或被非
正常删除时出现这种情况。
3
、病毒
防火墙的扫描也会引起数据库置疑。
4
、当
SQL Server
启动时,将会尝试获得对数据库文件的排他访问权,如果此时该文件被其他程序占用,或者遗失,
数
据库将会被标记为置疑。
5
、电脑非法关机也会造成数据库置疑。
6<
/p>
、电脑磁盘有坏道有可能造成数据库置疑。
二、数据库置疑的预防
1
、数据库存放的盘符,空间是否够大,经常检查盘符的空间。
2
、数据库存放的盘符的格式设置为
NTFS
p>
格式。
3
、进行
病毒清除时,尽量把
SQL
服务停掉,再进行检查。
4
、尽量减少非正常关机。
5
、建议客户购买后备电源。
6
、给客户实施软件之后一定要做好自动备份。
7
、建议客户每隔一定时间手动备份一次。
三、数据库置疑的修复
1
、正常的备份、
SQL
数据库恢复方式
正常方式下,我们要备份一个数据库,首先要先将该数据库
从运行的数据
服务器中断开,或者停掉整个数据库服务器,然后复制文件。
卸下数据库的命令:
Sp_detach_db
数据库名
连接数据库的命令:
p>
Sp_attach_db
或者
sp_at
tach_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
文件是数据库<
/p>
数据文件,
ldf
是数据库日志文件。
例子:
假设数据库为
pdm
,其数据文件为<
/p>
pdm_
,日志文件为
pdm_
。下面我们讨论一下如何备份、恢复该数据
库。
卸下数据库:
sp_detach_db 'pdm'
连接数据库:
sp_attach_db
'pdm','C:Program
FilesMicrosoft
SQL
ServerMSSQLDatapdm_','C:Program
FilesMicrosoft SQL ServerMSSQLDatapdm_'
sp_attach_single_file_db
'pdm','C:Program FilesMicrosoft SQL
ServerMSSQLDatapdm_'
2
、只有
p>
mdf
文件的恢复技术
由于种种原因,我们如果当时仅仅备份了
mdf
文件,那么恢复起来就是一件
很麻烦的事情了。
如果您的
mdf
文件是当前数据库产生的,
p>
那么很侥幸,
也许你使用
sp_attac
h_db
或者
sp_attach_single_file_
db
可
以恢复数据库,但是会出现类似下面的提示信息
设备激活错误。物理文件名
'C:Program
FilesMicrosoft SQL ServerMSSQLdatapdm_'
可能有误。
已创建名为
'C:Program
FilesMicrosoft SQL ServerMSSQLData
pdm_'
的新日志文件。
但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也
许上述办法就行不通了。你也许会得到类似下面的错误信息
服务器
:
消息
1813
,级别
16
,状态
2
,行
1
未能打开新数据库
'pdm'
。
CREATE
DATABASE
将终止。
设备激活错误。物理文件名
'd:pdm_'
可能有误。
怎么办呢?别着急,下
面我们举例说明恢复办法。现在我从其他机器上拷贝
回来了数
据库文件
pdm_
到本计算机上,存放到了
E
盘的一个文件夹里
A
.我们使用
SQL Server<
/p>
企业管理器建立一个供恢复使用的数据库‘pdm’,
存放在
E
盘(不要与拷贝回来的数据库放到一个
文件夹就行)。
B
.停掉数据库服务器。
p>
C
.将刚才生成的数据库的日志文件
pdm
_
删除,用要恢复的数据库
mdf
文件覆盖刚才生成的数据库数据文件
pdm_
< br>。
p>
D
.启动数据库服务器。此时会看到数据库
pdm
的状态为“置疑”。这时候不
能对此数据库进行任何操作。
E
.
p>
设置数据库允许直接操作系统表。此操作可以在
SQL
Server Enterprise
Manager
里面选择数据库服务
器,按右键,选择“属性”,在“服务器设置”页
面中将“允许对系统目录直接修改”一项选中。
也可以用‘SQL
查询分析器’执行如下语句来实现。
use
master
go
sp_configure 'allow updates',1
go
reconfigure with
override
go
<
/p>
F
.设置
pdm
为紧急修复模式
,运行‘SQL
查询
分析器’执行如下语句来实
现。
update
sysdatabases set status=-32768 where
dbid=DB_ID('pdm')
此时可以在
SQL Server Enterprise
Manager
里面看到该数据库处于“只读
置疑
脱机
< br>
紧急模式”可以看到数据库里面的表,但是仅仅有系统表
G
.下面
执行真正的恢复操作,重建数据库日志文件
dbcc
rebuild_log('pdm','E:pdm_')
-
-
-
-
-
-
-
-
-
上一篇:LINUX最常用的系统状态查询命令
下一篇:委托翻译合同