原文地址:http://blog.itpub.net/35489/viewspace-616459/
在SQL Server中經常遇到事務日志變大的情況,除了將數據庫設置為“自動收縮”外,還可以使用下面的SQL命令進行快速清除數據庫中的事務日志,命令如下:
- 第一步:清空日志
DUMP TRANSACTION
databasename
WITH
NO_LOG
-- 第二步:截斷事務日志
BACKUP LOG
databasename
WITH
NO_LOG
-- 第三步:收縮數據庫
DBCC SHRINKDATABASE(databasename)
需要說明幾點:
1. 上面的SQL命令需要按照順序執行;
2. 執行上面的命令通常比直接使用右鍵菜單中的“收縮”命令要快很多
參考資料:
SQL SERVER 數據庫日志已滿,如何收縮數據庫日志
http://blog.csdn.net/faintbear/archive/2005/02/06/283316.aspx
如何收縮數據庫日志
http://www.cndiy8.com/data/web5701/20050228/20050228__3794589.html
---------------------------------------------------------------------------------------
還一個比較簡單的方法:先把數據分離,然后刪除.ldf的文件,重新附加數據庫 MDF文件.會提示找不到.ldf文件。直接刪除即可,如下圖
刪除后,點擊確定,數據庫被附加上。新生成的ldf文件只有504 KB
1、分離數據庫后 到目錄下刪除.ldf文件后 到sql server中附加數據庫 (會提示找不到ldf文件,不用管,直接刪除就可以了) 附加成功后 ,ldf文件 504K 經確認可行,並且對網站的內容沒有影響。。。。呵呵 2、用sql語句收縮事務日志文件 不過我還沒有成功過 步驟操作:1. 備份事務日志文件,以使大多數活動虛擬日志文件處於非活動狀態。因此,可在以后的步驟中刪除非活動的虛擬日志文件。為此,請運行與以下 Transact-SQL 語句相似的 Transact-SQL 語句。BACKUP LOG <DatabaseName> TO DISK = '<BackupFile>' 注意:在此語句中,<DatabaseName> 是要備份的數據庫名稱的占位符。在此語句中,<BackupFile> 是備份文件完整路徑的占位符。 例如,運行以下 Transact-SQL 語句。BACKUP LOG TestDB TO DISK='C:\TestDB1.bak' 2. 收縮事務日志文件。為此,請運行與以下 Transact-SQL 語句相似的 Transact-SQL 語句。DBCC SHRINKFILE (<FileName>, <TargetSize>