THE SKY OF THE .NET

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数据库可疑
批量修复:
DECLARE @baseName varchar(255)
/**此操作是修复 可疑数据库操作.
此处用变量表示了库名,只要更改第二行的@baseName变量值就可以了。
不能一次执行,必须分两步操作才行
**/
set @baseName = 'PSAccount'
--此处是变量,改为要修复的数据库名
exec('ALTER DATABASE ' + @baseName + ' SET EMERGENCY')
--修改数据库为紧急模式
exec('ALTER DATABASE ' + @baseName + ' SET SINGLE_USER')
--修改数据库为单用户模式
exec('DBCC CheckDB (' + @baseName + ', REPAIR_ALLOW_DATA_LOSS)')
--修复数据库日志重新生成
--先执行完上以操作后,再把以上三行删除,把下面一行取消注释即可
--exec('ALTER DATABASE ' + @baseName + ' SET MULTI_USER')
--修改数据库为多用户模式
/*操作完成后,需要重启SQL服务*/

 

单表修复(单用户模式下):

检查:
DBCC CheckTable ('SMOptionModuleD')

--1) 快速修复 REPAIR_FAST
--2) 重建索引并修复 REPAIR_REBUILD
--3) 允许丢失数据修复 REPAIR_ALLOW_DATA_LOSS

DBCC CheckTable ('SMOptionModuleD',REPAIR_ALLOW_DATA_LOSS)

 

--检查哪些表有问题 需要修复
DECLARE @table_name SYSNAME
DECLARE TempTable CURSOR
FOR
SELECT name
FROM sysobjects
WHERE xtype IN ( 'u' )
OPEN TempTable
FETCH NEXT FROM TempTable INTO @table_name
WHILE @@FETCH_STATUS = 0
BEGIN
DBCC CheckTable (@table_name)
PRINT '--------------数据表' + @table_name + '的检查整理完成------------------'
FETCH NEXT FROM TempTable INTO @table_name
END
CLOSE TempTable
DEALLOCATE TempTable

posted on 2017-12-07 19:56  RIBBIT.NET  阅读(115)  评论(0编辑  收藏  举报