安裝 SQL 或 SP 補丁提示有掛起操作需重啟,重啟常無效。解決:刪除登錄鍵 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations。
-- 重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
-- 收縮資料與日誌
DBCC SHRINKDB
DBCC SHRINKFILE
dbcc shrinkdatabase(dbname)
exec sp_change_users_login 'update_one','newname','oldname'; GO
RESTORE VERIFYONLY from disk='E:dvbbs.bak'
ALTER DATABASE [dvbbs] SET SINGLE_USER; GO
DBCC CHECKDB('dvbbs', REPAIR_ALLOW_DATA_LOSS) WITH TABLOCK; GO
ALTER DATABASE [dvbbs] SET MULTI_USER; GO
CHECKDB 三修復參數:
REPAIR_ALLOW_DATA_LOSS:含分配/取消分配、結構修復、刪除損壞文字物件,可能遺失資料。
REPAIR_FAST:小型快速修復(如非叢集索引附加鍵),無資料遺失風險。
REPAIR_REBUILD:含 REPAIR_FAST 所有修復加上重建索引等耗時操作,無資料遺失風險。
常用檢查:DBCC CHECKDB('dvbbs') WITH NO_INFOMSGS, PHYSICAL_ONLY
SET NOCOUNT ON
DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT
USE tablename -- 目標資料庫
SELECT @LogicalFileName = 'tablename_log', @MaxMinutes = 10, @NewSize = 1
DECLARE @OriginalSize int
SELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileName
PRINT 'Original Size ...'
CREATE TABLE DummyTrans (DummyColumn char(8000) not null)
DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
WHILE @MaxMinutes > DATEDIFF(mi, @StartTime, GETDATE())
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 / 1024) > @NewSize
BEGIN
SELECT @Counter = 0
WHILE (@Counter < @OriginalSize / 16) AND (@Counter < 50000)
BEGIN
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
PRINT 'Final Size ...'
DROP TABLE DummyTrans
SET NOCOUNT OFF