开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SQL Server置疑数据库解决方法

简介:
+关注继续查看
方法一:

  现象:数据库Log日志太大了,shrink不掉。于是想把数据库文件卸下来,删除log,再附加上。附加失败。

  提示错误:

  服务器: 消息 1813,级别 16,状态 2,行 1

  未能打开新数据库 'metadb'。CREATE DATABASE 将终止。

  设备激活错误。物理文件名 'd:\metadb.LDF' 可能有误。

  环境:MSSQL SERVER 2000 企业版

  解决过程:

  1.建一个新库newdb

  2.停掉数据库。删除新库的log文件,讲metadb.mdf覆盖newdb.mdf。

  3.启动数据库服务器。数据库newdb的状态为“置疑”。

  4. 允许对系统目录直接修改

use master 
go 
sp_configure 'allow updates',1 
go 
reconfigure with override 
go 
update sysdatabases set status=-32768 where dbid=DB_ID('newdb')

  5.重建log


dbcc rebuild_log('newdb','C:\Program Files\Microsoft SQL Server\MSSQL\Data\newdb_log.ldf')

  6.dbcc检查


dbcc checkdb('newdb')

  7.设置数据库为正常状态


sp_dboption 'newdb','dbo use only','false'

  8 不允许对系统目录直接修改


sp_configure 'allow updates',0 
go 
reconfigure with override 
go

  方法二:

  解决办法:   
    
这是最简单的办法是有数据库的全备份,然后恢复即可。

  步骤:   
    
1. 删除原始的数据库:  


 USE    MASTER    
   GO    
   DROP    DATABASE    DB_SUEPECT  

 
    
2.建立同名的数据库:  

  

 USE    master    
   GO    
   CREATE    DATABASE    DB_SUSPECT    
   ON    
   (    NAME    =    DBNAME_DAT,    
   FILENAME    =    'C:',    
   SIZE    =    10,    
   FILEGROWTH    =    5    )    
   LOG    ON    
   (    NAME    =    'DBNAME_LOG',    
   FILENAME    =    'g:',    
   SIZE    =    5MB,    
   FILEGROWTH    =    5MB    )    
   GO   

    
3.恢复数据库:  


 RESTORE    DATABASE    DB_SUSPECT    
   FROM    DBNAME_BACKUP.DAT   

    
4.数据库完整性检测:  


DBCC    CHECKDB('DB_SUSPECT')   

    
5.重新启动MSSQLSERVER服务.   
    
如果没有全备份,那就要用一些特殊的方法:   
    
1.设置数据库为紧急模式  


 Use    Master    
   GO    
   sp_configure    'allow    updates',    1    
   reconfigure    with    override    
   GO    
   UPDATE    sysdatabases    SET    status    =    32768    where    name    =    'DB_SUSPECT'    
   GO   

    
2.停掉SQL Server服务:  

NET    STOP    MSSQLSERVER  

 
    
3.把原始数据库的数据文件DBNAME_DAT.MDF,DBNAME_LOG.LDF移走:   
    
4.启动SQL Server服务:  


   NET    START    MSSQLSERVER   


    
5.重新建立一个同名的数据库DB_SUSPECT;   
    
  


 USE    master    
   GO    
   CREATE    DATABASE    DB_SUSPECT    
   ON    
   (    NAME    =    DBNAME_DAT,    
   FILENAME    =    'C:',    
   SIZE    =    10,    
   FILEGROWTH    =    5    )    
   LOG    ON    
   (    NAME    =    'DBNAME_LOG',    
   FILENAME    =    'g:',    
   SIZE    =    5MB,    
   FILEGROWTH    =    5MB    )    
   GO   

    
6.设置数据库运行在单用户的模式:  

  


 USE    MASTER    
   GO    
   ALTER    DATABASE    DB_SUSPECT    SET    SINGLE_USER    
   GO   

    
7.停掉SQL服务:  


 NET    STOP    MSSQLSERVER 

  
    
8.把原来的数据文件再覆盖回来:   
    
9.启动SQL    Server服务:  
 
   


NET    START    MSSQLSERVER 

  
    
10.重新设置SQLSERVER的状态:  

  

 USE    MASTER    
   GO    
   EXEC    sp_resetstatus    "DB_SUSPECT"

   
    
11.数据库完整性检测:  


DBCC    CHECKDB('DB_SUSPECT')   

    
12.恢复数据库为多用户模式:  

 


  USE    MASTER    
   GO    
   ALTER    DATABASE    DB_SUSPECT    SET    MULTI_USER    
   GO    
    


13.恢复SQLSERVER原始的配置:  

  


 USE    MATER    
     
   GO    
     
   UPDATE    sysdatabases    SET    status    =    4194320    where    name    =    'DB_SUSPECT'    
   GO   

    
14.配置SQLSERVER不允许更新系统表: 
  
  

 USE    MASTER    
   GO    
   sp_configure    'allow    updates',    0    
   reconfigure    with    override    
   GO   

    
15.重新启动MSSQLSERVER服务:   
    
最好重新启动操作系统   
    
16.备份数据库:   
    
可以通过SQLSERVER企业管理器或T-SQL.需要备份MASTER和DB_SUSPECT

原文出处:http://hi.baidu.com/genersoft/blog/item/d5fd818b1b25367b9f2fb490.html




    本文转自 Fanr_Zh 博客园博客,原文链接:http://www.cnblogs.com/Amaranthus/archive/2011/03/26/1996254.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL数据库学习之路(九)
目录   数据库创建补充: 为数据库用户赋予权限 在数据库表中使用视图进行添加修改 数据库创建补充: 以文本格式显示自己创建的数据库表                                          以网格格式显示自己创建的数据库表 可以右键数据库--属性---选项,在选项中可以设置数据库的兼容性,还有是否可以让多人同时访问或者单人访问。
862 0
SQL数据库学习之路(练习)---C#登录界面连数据库
目录 C#登录界面连数据库 一、在数据库中先创建一个数据库。 二、在VS中创建C#的windows窗体应用程序 三、在VS中连接到数据库 四、设计登录界面 五、设置注册界面 六、将form1的按钮和form2进行关联 七、设置form2界面的注册按钮 八、form1的登录按钮设置 九、运行成果 参考文章: C#登录界面连数据库 一、在数据库中先创建一个数据库。
2723 0
SQL数据库学习之路(八)
数据库介绍: 在网页上的主程序中进行注册操作,然后把数据发送给人,人传递这些数据到数据库当中。   为什么学ADO.NET:之前我们所学的只能在查询分析器中查看数据,操作数据。
885 0
SQL数据库学习之路(七)
在SQL server managerment中可以点击帮助,会有帮助文档。 一、联合查询 将多个查询结果集合并成一个。
819 0
SQL数据库学习之路(六)
一、连接查询:当需要的结果需要从多张表中取时 关键问题:哪些表、关系(学生表的Id联系到班级表的Id) 内连接:inner join,两表中完全匹配的数据。
899 0
SQL数据库学习之路(四)
要求:通过SQL语句创建以下基本表:    教师关系 T(T#, TNAME,TITLE)    课程关系 C(C#,CNAME,T#)    学生关系 S(S#,SNAME,AGE,SEX)    选课关系SC(S#,C#,SCORE)    班级关系CLASS(CLASSID,CLASSNAME)    其中红色粗体为主键,带下划线的属性为外键。
812 0
SQL数据库学习之路(二)
(一)1.约束:实现数据的有效性检查---------主键(保证值是唯一的) 2.非空(输入的数据不允许为空) 3.唯一(存入的数据不能重复) 4.默认(自己不给数据添加值,值会默认添加) 5.检查(给值一个选定的范围) 6.外键(对关系的有效性进行检查,有关系才有外键) (二)脚本操作数据库 1.不区分大小写,字符串使用单引号,末尾不需要加分号。
802 0
SQL数据库学习之路(三)
一.表数据的操作 1.简单查询 select * from 表名 2.增加数据 insert into 表名(列名) values(值)                   ----要求值的列名与值要位置对应   ...
789 0
SQL数据库学习之路(一)
1.数据库简介(一个放数据的仓库)  解决的问题:持久化存储,优化读写,保证数据的有效性 关系型数据库:    基于E-R模型(实体-联系图Entity Relationship)    使用sq|语言进行操作(SQL...
1010 0
T-SQL查询:语句执行顺序
原文:T-SQL查询:语句执行顺序 读书笔记:《Microsoft SQL Server 2008技术内幕:T-SQL查询》   ===============  T-SQL查询的执行顺序 ===============      =============== T-SQL查询的示意图...
788 0
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载