欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

无日志文件恢复SQL Server数据库实战

程序员文章站 2022-03-14 14:29:44
...

SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows

  SQL Server 是一个关系管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。

  SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的等多种平台使用。

  SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。

  与 Microsoft Visual Studio、Microsoft Office System 以及新的开发工具包(包括 Business Intelligence Development Studio)的紧密集成使 SQL Server 2005 与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005 都可以为您提供创新的解决方案,帮助您从数据中更多地获益。

  事情的起因
  
  昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB,于是我决意缩小这个日志文件。经过收缩数据库等操作未果后,我犯了一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数据库恢复的文章上都说道:“无论如何都要保证数据库日志文件存在,它至关重要”,甚至微软甚至有一篇KB文章讲如何只靠日志文件恢复数据库的。我真是不知道我那时候是怎么想的?!
  
  这下子坏了!这个数据库连不上了,企业管理器在它的旁边写着“(置疑)”。而且最要命的,这个数据库从来没有备份了。我唯一找得到的是迁移半年前的另外一个数据库服务器,应用倒是能用了,但是少了许多记录、表和存储过程。真希望这只是一场噩梦!
  
  数据库日志文件的误删或别的原因引起数据库日志的损坏
  
  方法一
  
  1.新建一个同名的数据库
  
  2.再停掉sql server(注意不要分离数据库)
  
  3.用原数据库的数据文件覆盖掉这个新建的数据库
  
  4.再重启sql server
  
  5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
  
  6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
  
  数据库的脚本创建一个新的数据库,并将数据导进去就行了.
  
  USE MASTER
  
  GO
  
  SP_CONFIGURE 'ALLOW UPDATES',1 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 reconfigure with override
  
  Go
  
  sp_dboption '置疑的数据库名', 'single user', 'false'
  
  Go