標籤:事務 database one serve nbsp simple sql size .data
今天按常用方法收縮一個測試用的資料庫日誌,發現沒法收縮!
dbcc sqlperf(logspace)
USE [dbname]GO ALTER DATABASE [dbname] SET RECOVERY SIMPLE WITH NO_WAITGODBCC SHRINKFILE (N‘dbname_log‘ , 0, TRUNCATEONLY)GODBCC SHRINKDATABASE(N‘dbname‘ )GO
日誌大小還是一樣。
DBCC OPENTRAN 查看是否開啟的事務。發現有開啟的事務,執行檢查點再收縮,還是不行!
DBCC OPENTRAN (dbname) CHECKPOINT
參考:http://bbs.csdn.net/topics/350199751,將日誌事務標誌為已分發,再收縮,不行!
--日誌中所有複製的事務將標記為已分發EXEC sp_repldone @xactid = NULL,@xact_segno = NULL,@numtrans = 0,@time = 0,@reset = 1
現在查看虛擬記錄檔,發現有很多,並且都處於活動狀態
dbcc loginfo
最重要的語句竟然忘了,這可以查看日誌空間的重複使用正在等待最後一個檢查點的描述.。發現是REPLICATION
SELECT name,log_reuse_wait_desc FROM sys.databases where name=‘dbname‘
這個資料庫之前有作為事物同步過,但是都刪除了。分發庫也不存在了,現在竟然還有日誌在等待?!
參考http://bbs.csdn.net/topics/390674731?page=1 ,執行刪除所有複製對象。
--刪除當前資料庫中所有複製對象EXEC sp_removedbreplication dbname
再看日誌重用狀態,正常了!看來有效!
在收縮資料庫,查看已經收縮了!其他也恢複正常!
DBCC SHRINKFILE (N‘dbname_log‘ , 0, TRUNCATEONLY)GODBCC LOGINFOGODBCC OPENTRAN (dbname) GO
此收縮方法,適用於發布過資料庫訂閱同步的情況,一般正常情況下,都可以收縮日誌。
轉自:41865073
SqlServer 資料庫日誌無法收縮處理過程