在項目中數據庫創建了一個本地發布和訂閱,造成日志文件飛漲,想把日志文件縮小。
1:最初使用了最常用的方法:
USE [master] GO ALTER DATABASE 庫名 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 庫名 SET RECOVERY SIMPLE --簡單模式 GO USE 庫名 GO DBCC SHRINKFILE (N'庫名_log' , 11, TRUNCATEONLY) GO --這里的DNName_Log 如果不知道在sys.database_files里是什么名字的話,可以用以下注釋的語句進行查詢 --USE 庫名 --GO --SELECT file_id,name FROM sys.database_files; --GO USE [master] GO ALTER DATABASE SCDMS SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE SCDMS SET RECOVERY FULL --還原為完全模式 GO
結果發現不起作用
2:然后在網上查找命令,找到日志文件類型為 REPLICATION 即發布狀態
3:又查找到執行命令 ,該命令顯示很多status為2的日志,即沒有提交的。
DBCC LOGINFO('數據庫名稱')
4:直接選擇我之前創建的發布,提示以下錯誤:
sqlserver無法作為數據庫主體執行,因為主體 "dbo" 不存在...
查找到以下命令,為用戶添加數據庫角色時提示已經存在此帳號請查看數據庫下是否已經存在該帳號並刪除重新授權
USE 庫名 EXEC sp_changedbowner 'sa'
5:然后再刪除發布和訂閱即成功。最后再執行第一步的SQL命令,日志文件縮小成功。
