SQL SERVER实用经验技巧集[二](二)

2014-11-24 12:18:13 · 作者: · 浏览: 2
复时,可以这么做:

  1,把数据库设置为emergency mode

  2,重新建立一个log文件

  3,把SQL Server 重新启动一下

  4,把应用数据库设置成单用户模式

  5,做DBCC CHECKDB

  6,如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉

  我实践了一下,把应用数据库的数据文件移走,重新建立一个同名的数据库XXX,然后停掉SQL服务,把原来的数据文件再覆盖回来。之后,按照怡红公子的步骤走。

  但是,也很遗憾,除了第2步之外,其他步骤执行非常成功。可惜,重启SQL Server之后,这个应用数据库仍然是置疑!

 不过,让我欣慰的是,这么做之后,倒是能够Select数据了,让我大出一口气。只不过,组件使用数据库时,报告说:“发生错误:-2147467259,未能在数据库 XXX 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。”

  最终成功恢复的全部步骤
  设置数据库为紧急模式
  停掉SQL Server服务;

  把应用数据库的数据文件XXX_Data.mdf移走;

  重新建立一个同名的数据库XXX;

  停掉SQL服务;

  把原来的数据文件再覆盖回来;

  运行以下语句,把该数据库设置为紧急模式;


  运行“Use Master

  Go

  sp_configure allow updates, 1

  reconfigure with override

  Go”


  执行结果:

  DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

  已将配置选项 allow updates 从 0 改为 1。请运行 RECONFIGURE 语句以安装。

  接着运行“update sysdatabases set status = 32768 where name = XXX”

  执行结果:

  (所影响的行数为 1 行)

  重启SQL Server服务;

  运行以下语句,把应用数据库设置为Single User模式;

  运行“sp_dboption XXX, single user, true”

  执行结果:

  命令已成功完成。

  ü 做DBCC CHECKDB;

  运行“DBCC CHECKDB(XXX)”

执行结果:

  XXX 的 DBCC 结果。

  sysobjects 的 DBCC 结果。

  对象 sysobjects 有 273 行,这些行位于 5 页中。

  sysindexes 的 DBCC 结果。

  对象 sysindexes 有 202 行,这些行位于 7 页中。

  syscolumns