数据库可疑
批量修复:
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