1、非正常关机(如直接给电脑断电);
2、在处理大批量数据时被直接关机了;
、置疑往往是在写数据时且部分数据还没有被提交就服务器关闭了,导致数据库日志文件和数据文件不一致导致的,这个情况是主要的,其他如数据文件没有写全的情况下被关闭服务器了。
以下是参考资料,若无法解决,把数据发给我,我帮你看一下一、SQL-Server附加数据库时失败。1、异常情况:服务器在正常运行的情况下突然断电,导致数据库文件损坏,具体表现是:数据库名后面有“(置疑)”字样。2、异常分析:关于823错误的 SQL-SERVER 中的帮助:错误823严重级别 24消息正文在文件 "%4!" 的偏移量 %3! 处的 %2! 过程中,检测到 I/O 错误 %1!。解释Microsoft SQL Server 在对某设备进行读或写请求时遇到 I/O 错误。该错误通常表明磁盘问题。但是,错误日志中在错误 823 之前记录的其它核心消息应指出涉及了哪个设备。3、解决办法:在SQL-Server企业管理器中,新建同名数据库(这里假设为Test)后,停止数据库,把损坏的数据库文件Datamdf和Test_logLDF覆盖刚才新建数据库目录下的Datamdf和Test_logLDF,同时删除Test_logLDF文件;启动数据库服务,发现数据库名Test后面有“置疑”字样。不要紧,打开SQL自带查询分析器,分别执行如下SQL语句:--第一、exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE / 打开修改系统表的开关 /--第二、update sysdatabases set status=32768 where name='数据库名' / 设置数据库状态 /--第三、DBCC REBUILD_LOG ('数据库名','E:\database\1204_LogLDF') / 重建LDF文件 /--第四、update sysdatabases set status=0 where name='数据库名' / 重置数据库状态 /--第五、restore database 数据库名 WITH RECOVERY / 恢复数据库 /--第六、exec sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE / 关闭打开修改系统表的开关 /按照此方法 *** 作,应该能修复数据库正常访问了。
请输入你的答案
数据库926错误解决方案在做任何 *** 作前首先备份数据库的数据文件和日志文件!以及最新的备份文件!第一种解决方法:先删除报错数据库,再新建一同名数据库,然后暂停Service
manager(及sql
server
服务)
,删除库文件和日志文件再启动Service
manager
,使用单数据文件恢复数据库命令恢复数据库。例:打开sql
server/tools/sql
server
query
analyzer
执行下面 *** 作
EXEC
sp_attach_single_file_db
@dbname
=
'pubs',
@physname
=
'c:\mssql7\data\pubsmdf'
说明:‘pubs’为要恢复的数据库名称,‘c:\mssql7\data\pubsmdf’为要恢复的数据库的库文件的具体路径和文件名称。再重新启动一下service
manager
,看能否正常打开处理后的数据库;如果不可以再使用第二种方案。第二种解决方法:打开sql
server/tools/sql
server
query
analyzer
执行下面 *** 作
USE
MASTER
GO
sp_configure
'allow
update',1
RECONFIGURE
WITH
OVERRIDE
GO
UPDATE
sysdatabases
set
status
=
32768
WHERE
name
=
'db_pos363'
GO
sp_configure
'allow
update',0
RECONFIGURE
WITH
OVERRIDE
GO
说明:'db_pos363'是要修复的数据库名称。执行完毕再重启一下Service
manager打开数据库看是否处于紧急状态!再从另一装有sql
2000的机器上连接报错的数据库,然后再在sql
2000的机器上新建一数据库,再使用sql
2000自带的数据库导入导出功能(在新建的数据库上单击右键/所有任务/数据导入、数据导出)从报错数据库导入数据到新建的数据库中!在导入选项中注意以下几项:
1,
导入方式选择分‘从源数据库复制表和视图’以及‘从sql
server数据库间复制对象和数据’。当选择从源数据库复制表和视图时一定要选择全部表!
2,
当选择‘从sql
server数据库间复制对象和数据’时,在‘导入导出向导’对话框中去除‘使用默认选项’的选中标志;再在打开‘选项’对话框,去除以下三项的选中标志。A,复制数据用户和数据库角色;B,复制sql
server
登陆;C,复制对象及权限。
3,
在使用‘从sql
server数据库间复制对象和数据’时,有时会出现单张表导入失败,这时有时会在导入结束时提示那几张表导入失败有时不提示,如果提示,就再使用‘从源数据库复制表和视图’并选中导入失败的表重新导入一遍;如果不提示就只能在一张张表打开查看了,发现空表后再使用‘从源数据库复制表和视图’导入需要导入的表!导入成功后再删除sql
server
70机器上处于紧急状态的数据库,再新建一个同名数据库,建好后再使用sql
2000的数据库导出功能导出到此数据库中,在导出过程中同样要注意导入时的注意事项!
SQL Server 2000数据库崩溃后的补救措施:
案例描述:
SQL Server 2000数据库崩溃后,重装数据库前的准备:
1三个系统库(master,msdb,model)的完全备份:
2两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份):
三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过饕档鹊取
两个用户数据库在上周日晚做过完全备份(user01bak和user02bak)
需求:一次性恢复到用户数据库最后一个备份前的状态。
下文中,我们将介绍一下常规的恢复过程:
1 备份可用的数据, 包含所有系统数据库和用户数据库的数据文件和日志文件(mdf/ldf/ndf)
2 卸载原来的安装
3 系统表查找和删除所有的MSSQLServer项
4 磁盘上删除安装SQL SErver产生的所有文件
5 重新安装SQL Server,所需安装的补丁的版本要求保持与备份系统数据库时安装的补丁版本一致
6 单用户模式下恢复master数据库
7 恢复其他系统数据库
8 恢复用户数据库
此外,我们还可以尝试用下面的方法:
假如你的时间比较充裕,而且想尽量恢复数据到最近的时间点, 可以在上述步骤中做以下的尝试:
1 首先,将第6,7两个步骤改为:
a 停止MSSQL服务
b 用步骤1备份的系统数据库的数据文件和日志文件替换安装后生成的系统数据库的对应文件
c 建立与SQL Server系统崩溃之前一样的用户数据库的存放目录, 并且把用户数据库文件按原来的位置存放
d 启动MSSQL服务
e 如果MSSQL服务成功, 在企业管理看看用户数据库有没有置疑, 如果没有置疑, 则其他 *** 作都不用做了, 数据已经恢复
注意事项:
在具体 *** 作以上的步骤b之前, 先备份准备覆盖的文件。
2 如果步骤1的尝试不成功, 则再做下面的尝试, 把步骤8修改为下面的:
a 停止MSSQL服务
b 用备份的文件还原被覆盖的文件
c 尝试用附加的方式恢复用户数据库
d 如果成功, 则修复各用户数据库中的孤立用户
恢复过程会涉及到的一些具体处理 1 恢复系统数据库:
在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:
master-从整体上控制用户数据库和SQL Server *** 作,在创建了任何用户定义的对象后,都要备份它
model-为新数据库提供模版和原型
msdb-包含了有关作业、报警及 *** 作员等信息
假如包含系统数据库的介质已经改变,则必须重建系统数据库,如果你目前仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。
如果master坏了,不能启动系统,可以按照下面步骤进行恢复
(1)重建系统数据库 运行c:\mssql7\binn\rebuildmexe,按照提示进行即可,
过程中需要系统数据库样本的路径,可在安装光盘中找到;
(2)重建系统数据库后,启动SQL Server服务,用系统数据库的备份恢复数据库
就行了通常恢复顺序为master->msdb->model
在恢复master的备份时要注意:必须在单用户(single user)模式下进行
进入单用户模式的方法:
a 在命令行模式下输入:sqlservr -c -f -m或者输入sqlservr -m
其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动
-f 用最小配置启动SQL Server
-m 单用户模式启动SQL Server
b 可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始
(3)进行master数据库的恢复
a 直接进入查询分析器,有个提示不要理会它
输入恢复语句进行数据库恢复:
RESTORE DATABASE master from disk='c:\具体的备份文件名'
b 或者用这个,在命令提示符下输入,注意大小写
使用"windows身份验证"的,输入:isql /E
使用"sql server和windows身份验证"的,输入:isql /U"用户名" /P"密码"
然后在出现的提示符下输入(注意1>,2>是提示符):
1>RESTORE DATABASE master from disk='c:\具体的备份文件名'
2>GO
2 还原数据库的具体步骤:
(1) 恢复最近一次的完整备份
企业管理器--右键"数据库"--所有任务--还原数据库
--"还原为数据库库"中输入还原后的数据库名,设为:test
--还原选择"从设备"--选择设备--添加--添加你的备份文件
--确定,回到数据库还原的界面
--"还原备份集",选择"数据库--完全"
--选项--将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名
--如果要还原的数据库已经存在,选择"在现有数据库上强制还原"
--"恢复完成状态",选择"使数据库不再运行,但能还原其它事务日志"
--确定 --或用SQL语句:
RESTORE DATABASE 数据库名
FROM DISK = 'c:\你的完全备份文件名'
WITH NORECOVERY
(2)恢复完全备份后, 最近一次的差异备份(如果有的话)
企业管理器--右键"数据库"--所有任务--还原数据库
--"还原为数据库库"中选择数据库名:test
--还原选择"从设备"--选择设备--添加--添加你的备份文件
--确定,回到数据库还原的界面
--"还原备份集",选择"数据库--差异"
--"恢复完成状态",选择"使数据库不再运行,但能还原其它事务日志"
--确定
--或用SQL语句:
--或用SQL语句:
RESTORE DATABASE 数据库名
FROM DISK = 'c:\你的差异备份文件名'
WITH NORECOVERY
(3)按时间先后, 恢复差异备份后(如果没有差异备份,则是完全备份)的所有日志备份
企业管理器--右键"数据库"--所有任务--还原数据库
--"还原为数据库库"中选择数据库名:test
--还原选择"从设备"--选择设备--添加--添加你的备份文件
--确定,回到数据库还原的界面
--"还原备份集",选择"事务日志"
--"恢复完成状态"
如果是恢复最后一个日志文件,选择"使数据库可以继续运行,但无法还原其它事务日志"
否则选择"使数据库不再运行,但能还原其它事务日志"
--确定
--或者使用SQL语句:
RESTORE DATABASE 数据库名
FROM DISK = 'c:\你的日志文件名'
WITH RECOVERY
3 解决孤立用户:
(1) 查看某个数据库的孤立用户:
USE 库名
EXEC sp_change_users_login 'Report'
(2)自动修复某个孤立的用户:
USE 库名
EXEC sp_change_users_login 'Auto_Fix', '孤立用户名', NULL, '密码'
--假如密码指示用户对应的登录不存在时, 系统自动建立登录, 为登录分配密码。
修复方法
1
打开SQL企业管理器
按序打开 ,开始--所有程序(或程序)--Microsoft SQL Server--企业管理器
打开后按序点+号展开直到数据库
2
右键显示置疑的数据库--所有任务--分离数据库。
d出对话框点击确定。
注,先记住数据库名。分离有时候会提示分离失败,右键随便一个数据库--刷新,就可以看到已经没了。
3
找到该置疑数据库的源文件,剪切到其他文件夹黏贴。
注,一般是同名的两个文件,后缀为mdf和ldf。
4
返回企业管理器新建一个同名的数据库名
右键随便一个数据库--新建数据库
d出对话框中名称输入数据库名
然后点击上方选项卡数据文件,点后面的位置下的省略号选择存放路径,并把文件名改成和置疑数据库源文件名一样,然后确定
再点击上门选项卡事务日志,一样 *** 作后确定。
停止SQL服务
右键数据库上的服务器名--停止,d出提示点是。
打开新建数据库所在路径,把之前备份的置疑数据库的源文件MDF后缀的复制过来覆盖,删掉新建数据库的后缀LDF的源文件。
启动SQL
右键数据库的服务器名--启动。
设置数据库允许直接 *** 作系统表
点击上方的工具--SQL查询分析器--输入下列语句
sp_configure 'allow updates',1 reconfigure with override
点击上方竖三角号执行(或按F5)
或右键选择数据库服务器--属性--服务器设置,将“允许对系统目录直接修改”打钩,确定。
设置要修复的数据库为紧急修复模式
删掉之前的语句,输入下列语句
update sysdatabases set status=32768 where name='数据库名'
注,数据库名记得改成你实际的。
点击上方竖三角号执行(或按F5)
重建数据库日志文件
删掉之前的语句(也可再前面语句前输入--),输入下列语句
DBCC TRACEON (3604)
DBCC rebuild_log('数据库名','数据库路径\数据库名ldf')
注,数据库名和日志文件按实际修改。
点击上方竖三角号执行(或按F5)
提示如图视为成功
验证数据库一致性(虽然可以省略但是不易建议跳过)
删掉之前的语句(也可再前面语句前输入--),输入下列语句
dbcc checkdb('数据库名')
注,数据库名按实际修改。
点击上方竖三角号执行(或按F5)
设置数据库为恢复正常状态
删掉之前的语句(也可再前面语句前输入--),输入下列语句
update sysdatabases set status=0 where name='数据库名'
注,数据库名按实际修改。
点击上方竖三角号执行(或按F5)
设置数据库‘允许直接 *** 作系统表’取消
点击上方的工具--SQL查询分析器--输入下列语句
sp_configure 'allow updates',0 reconfigure with override
点击上方竖三角号执行(或按F5)
或右键选择数据库服务器--属性--服务器设置,将“允许对系统目录直接修改”打钩取消,确定。
重启SQL。
以上就是关于请数据库高手帮帮忙!全部的内容,包括:请数据库高手帮帮忙!、SQL2000中的数据库文件损坏,请教高手有什么办法、sql数据库置疑,错误代码926,请问要如何修复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)