-
资料一
1
p>
、停止数据库服务器,将数据库
MDF
文件
和
LDF
文件复制备份一份
2
、启动数据库服务器,删除置疑的数据库
<
/p>
3
、仅用备份的数据库
MDF
文件附加数据库,
sp_attach_db
或者
sp_attach_single_file_db
可
以附加数据库,出现类似下面的提示信息:
设
备
激
活
错<
/p>
误
。
物
理
文
件
名
'C:/Program
Files/Microsoft
SQL
Server/MSSQL/data/myDb_'
可能有误。
已创建名为
'C:/Program
Files/Microsoft
SQL
Server/MSSQL/Data/myDb_'
的新日志文
件。
这个表明数据库附加成功,问题解决了,
如果成功则要恭喜你了,
< br>反正我是符加不成功,提
示类似下面的错误信息
未能打开新数据库
'myDb'
。
CREATE
DATABASE
将终止。
设备激活错误。物理文件名
'e:/www/myDb_'
可能有误。
此时我用了以下方法解决
(参考了网上的方法)
。
A
.我们
SQL SERVER
企业管理器新建立一个供恢复使用的同名数据库
(
注意:要跟问题数
据库同名,本例中为
myDb)
。
B
.停掉数据库服务器。
C
p>
.
将刚才生成的数据库的日志文件
myDb
_
删除
(本例中的示列数据库名,
实际
使
用您自己的数据库名称)
,用刚才备份的数据库
mdf
文件覆盖新生成的数据库数据文件
myDb_
。
D
.启动数据库服务器。此时会看到
数据库
myDb
的状态为“置疑”
。这
时候不能对此数
据库进行任何操作。
E
.设置
数据库允许直接操作系统表。此操作可以在
SQL
Server
Enterprise
Manager
里面
选择数据库服务器,按右
--
键,选择“属性”
,在“服务器设置”页面中将“
允许对系统目
录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure
with override
go
F
.设置
m
yDb
为紧急修复模式
在查询管理器里设置如下命令:
update
sysdatabases
set
status=-32768
where
dbid=DB_ID('myDb')
此时可以在
SQL
Server
Enterprise Manager
里面看到该数据库处于
“只读
/
置疑
/
脱机
/
紧急模式”可以看到数据库里
面的表,但是仅仅有系统表
G
.下面执行真正的恢复操作,重建
数据库日志文件
dbcc
rebuild_log('myDb','C:/Program
Files/Microsoft
SQL
< br>Server/MSSQL/Data/myDb_')
警
告
:
数据库
'myDb'
的日志已重建。
已失去
事务的一致性。
应运行
DBCC
CHECKDB
以验证物
理一致性。将必须重置数据库选项,
并且可能需要删除多余的日志文件。
DBCC
执行完毕。如果
DBCC
输出了错误信息,请与系统管理员联系。
此时打开在
SQL Server Enterprise M
anager
里面会看到数据库的状态为
“只供
DBO
使用”
。
此
时可以访问数据库里面的用户表了。
H
.验证数据库一致性(可省略)
dbcc
checkdb('myDb')
一般执行结果如下:
CHECKDB
发现了
0
个分配错误和
0
个一致性错误(在数据库
'myDb'
中)
。
DBCC
执行完毕。如果
DBCC
输出了错误信息,请与系统管理员联系。
I
.设置数据库为正常状态
sp_dboption 'myDb','dbo use
only','false'
J
.最后一步,我们要将步骤
E
中设置的
“允许对
系统目录直接修改”
一项恢复。
因为平时直接操作系统表是一件比较危险的事情。
当然,我
们
可以在
SQL Server Enterprise
Manager
里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go
reconfigure
with override
go
到此数据库置疑问题解决。
资料二
MS SQL
SERVER
数据库置疑后恢复步骤
--SQL
SERVER
数据库置疑后恢复步骤
--1
.
恢复步骤:
--a.
将
smlog_
文件备份到其它目录下;
-
-b.
将源目录下的
smlog_
文件
改名为
smlog_log_
;
--c
.
执行以下语句修改数据库的状态:
use Master
go
update sysdatabases set status=32768
where name='
数据库名称
'
p>
--
修改状态
,
設
為緊急狀
態
go
shutdown with nowait
--
停止数据库服务器
go
--d
.
退出
SQL
并在
(COMMAND)
命令行模式中通过下面的代码重新启动
SQL
:
sqlservr -c -T3608 -T4022
--
安全模式启动
SQL
SERVER
--e.
在查询分析器中执行以下语句来查看刚
刚修改过状态的数据库状态:
select Name,Status from
sysdatabases where
Name='
数据库名稱
'
--f.
执行以下代码新建日志文件:
dbcc
traceon(3604)--
跟踪
dbcc rebuild_log('
数据库名称
','
日志文件全路徑
')
--
文件名要有全路径和扩展名
--dbcc rebuild_log('prs_msc','d:/mscsql
/mssql/data/prs_msc_
--g.
将数据库置回正常状态:
update sysdatabases set status=0 where
name='
数据库名称
'
--h.
重新启动数据库后执行以下语句检查数据库:
DBCC CHECKDB
--
如果执行完有错误用以下语句修复
--i
.
要修复数据库必需将数据库改为单用户模式:
Exce sp_dboption
'
数据库名称
','single user','true'
---('false'
恢复多用户
)
--j.
执行以下语句修复数据库:
DBCC CHECKDB('
数据库名称
',REPAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DA
TA_LOSS
:是比较高级的修复方式
REP
AIR_FAST
:是简单快速的修复方式
/*
處理状态就为
< br>置疑
的數據庫
备份数据文件
,
然后按下面的步骤处理
:
< br>1.
新建一个同名的数据库
(
数
据文件与原来的要一致
)
2.
再停掉
sql
server(
注意不要分离数据库
)
3.<
/p>
用原数据库的数据文件覆盖掉这个新建的数据库
4.
再重启
sql server
5.<
/p>
此时打开企业管理器时会出现置疑,
先不管,
执行下面的语句
(注意修改其中的数据库名
)
6.<
/p>
完成后一般就可以访问数据库中的数据了
,
这时
,
数据库本身一般还要问题
,<
/p>
解决办法是
,
利
用数据库的脚本创建一个新的数据库
,
并将数据导进去就行了<
/p>
.
*/
USE
MASTER
GO
SP_CONFIGURE 'ALLOW
UPDATES',1
GO
RECONFIGURE
WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768
WHERE NAME='
置疑的数据库名
'
Go
sp_dboption
'
置疑的数据库名
','single
user','true'
Go
DBCC
CHECKDB('
置疑的数据库名
')
Go
update sysdatabases set
status=28 where
name='
置疑的数据库名
'
Go
sp_configure
'allow updates',0
GO
reconfigure with override
Go
sp_dboption
'
置疑的数据库名
', 'single
user','false'
Go
/*
只有
mdf
文件的恢复技术
由于种种原因,我们如果当时仅仅备份了
mdf
文件,那么恢复起来就是一件很麻烦的事情
了。
如果您的
mdf
p>
文件是当前数据库产生的,那么很侥幸,也许你使用
sp_atta
ch_db
或者
sp_attach_single_file
_db
可以恢复数据库,但是会出现类似下面的提示信息
设备激活错误。物理文件名
'C:/Program Files/Microsoft SQL
Server/MSSQL/data/test_'
可能有误。
已创建名为
'C:/Program
Files/Microsoft SQL Server/MSSQL/Data/test_'
的新日志文件。
但是,
如果您的数据库文件是从其他计算机上复制过来的,
那么很不幸,
也许上述办法就行
不通了。你也许会得到类似下面的错误信息
服务器
:
消息
1813
,级别
16
,状态
2
,行
1
未能打开新数据库
'test'
。
CREATE
DATABASE
将终止。
设备激活错误。物理文件名
'd:/test_'
可能有误。
怎么办呢?别着急,下面我们举例说明恢复办法。
*/
--A
.我们使用默认方式建立
一个供恢复使用的数据库
(
如
test
)
。可以在
SQL Server Enterprise
Manager
里面建立。
--B
.停掉数据库服务器。
--C
.将刚才生成的数据库的日志文件
te
st_
删除,用要恢复的数据库
mdf
文件覆盖刚
才生成的数据库数据文件
test_
。
--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_')
/*
执行过程中,如果遇到下列提示信息:
服务器
:
消息
5030
,级别
16
,状态
1
,行
1
未能排它地锁定数据库以执行该操作。
DBCC
执行完毕。如果
DBCC
输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在
F
步骤
中使用
SQL
Server
Enterprise
Manager
打开了
test
库的系统表,那么退出
SQL Server Enterprise
Manager
就可以了。
正确执行完成的提示应该类似于:
警告
:
数据库
'test'
的日志已重建。
已失去事务的一致性。
应运行
DBCC CHECKDB
以验证物
p>
理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC
执行完毕。如果
DBCC
输出了错误信息,请与系统管理员联系。
此时打开在
SQL Server Enterprise M
anager
里面会看到数据库的状态为
“只供
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
--
日志文件出现问题(丢失或文件
格式非法)
,怎么使数据库恢复正常
--
如<
/p>
果
用
sp_attach_single
_file
'TEST','C:/Program
Files/Microsoft
SQL
< br>Server/MSSQL/Data/test_'
失败则需要用下列步骤完成
p>
--1.
将置疑的数据库分离,将
mdf<
/p>
文件移走或改名!
sp_detach_db
'TEST'
--2.
重新在原来目录下建立同名的数据库
TEST
--3.
停掉
SQL Service
,
将先前的
mdf
文件拷贝回来覆盖<
/p>
(
或改名
),
删
除原来的
log
文件
(
或改名
)
--4.
启动
SQL
Service(
否则下面的语句没办法运行
)
--5
.
将数据库设成紧急模式
(status=32768)
sp_configure 'allow updates',1
reconfigure with override
update
sysdatabases set status=32768 where name='TEST'
--
重新建立日志文件
DBCC traceon(3604)
dbcc
rebuild_log('test','C:/Program Files/Microsoft SQL
Server/MSSQL/Data/test_')
Go
--6.
重新启动
SQL
Service
--7.
将数据库设置成单用户模式
(
下面三个语句均可
)
--sp_dboption
'TEST','single user','true'
update
sysdatabases set status=4096 where name='TEST'
--alter database TEST set Single_user
p>
--8.
检查数据库的完整性和一致性
,O
K
了就可以用了
DBCC
CheckDB(TEST)
--9.
将数据的访问权限设置成多
用户模式
sp_dboption 'TEST','single
user','false'
--
或
alter database
TEST set multi_user
--10.
关闭高级选项
sp_configure 'allow updates',0
reconfigure with override
--
结束
SQL
Server
安装挂起
在安装
sql
server
时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运
行安装程序之前必须重新启动计算机”错误。无法进行下去。
参考有关资料后
,
以下步骤基
本可以解
决:
1
)添加
/
删除程序中彻底删除
sql server
。
2
)将没有删除的
sql
server
目录也删除掉。
3
)
打开注
册表编辑器,
在
HKEY_LOCAL_MACHINE/SY
STEM/CurrentControlSet/Control/ Session
Manager
中找到
PendingFileRename
Operations
项目,
并删除它。
这样就可以清除安装暂挂项
目。
4
)删除注册表中跟
sql
server
相关的键
注意:
要
是不想重新启动就顺利安装,一般来说按照第三步就可以解决??
资料三:
--SQL
SERVER
数据库置疑后恢复步骤
--1
.
恢复步骤:
--a.
将
smlog_
文件备份到其它目录下;
-
-b.
将源目录下的
smlog_
文件
改名为
smlog_log_
;
--c
.
执行以下语句修改数据库的状态:
use Master
go
update sysdatabases set status=32768
where name='
数据库名称
'
p>
--
修改状态
,
設
為緊急狀
態
go
shutdown with nowait
--
停止数据库服务器
go
--d
.
退出
SQL
并在
(COMMAND)
命令行模式中通过下面的代码重新启动
SQL
:
sqlservr -c -T3608 -T4022
--
安全模式启动
SQL
SERVER
--e.
在查询分析器中执行以下语句来查看刚
刚修改过状态的数据库状态:
select Name,Status from
sysdatabases where
Name='
数据库名稱
'
--f.
执行以下代码新建日志文件:
dbcc
traceon(3604)--
跟踪
dbcc rebuild_log('
数据库名称
','
日志文件全路徑
')
--
文件名要有全路径和扩展名
--dbcc
rebuild_log('prs_msc','dmscsqlmssqldataprs_msc_
--g.
将数据库置回正常状态:
update sysdatabases set status=0 where
name='
数据库名称
'
--h.
重新启动数据库后执行以下语句检查数据库:
DBCC CHECKDB
--
如果执行完有错误用以下语句修复
--i
.
要修复数据库必需将数据库改为单用户模式:
Exce sp_dboption
'
数据库名称
','single user','true'
---('false'
恢复多用户
)
--j.
执行以下语句修复数据库:
DBCC CHECKDB('
数据库名称
',REPAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DA
TA_LOSS
:是比较高级的修复方式
REP
AIR_FAST
:是简单快速的修复方式
處理状态就为置疑的數據庫
备份数据文件
,
然后按下面的步骤处理
1.
新建一个同名的数据库
(
数据文件与原来的要一致
)
-
-
-
-
-
-
-
-
-
上一篇:唯美的韩文句子带翻译
下一篇:韩中翻译教程