SQL Server 2008 收縮日誌 清空刪除大日誌檔案
SQL2008 的收縮日誌
由於SQL2008對檔案和日誌管理進行了優化,所以以下語句在SQL2005中可以執行但在SQL2008中已經被取消:
(SQL2000)
-- Prog: Xinsoft
-- Time: 2005-03-26 10:34
SET NOCOUNT ON
DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT
USE dbJieXin -- 要操作的資料庫名
SELECT @LogicalFileName = 'dbJieXin_log', -- 日誌檔名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 10 -- 你想設定的日誌檔案的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName
--Drop TABLE DummyTrans
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)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans valueS ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
-------------------------------
USE dbJieXin
backup log dbJieXin with no_log
dump tran dbJieXin with no_log
dbcc shrinkdatabase (dbJieXin)
--------------------------------------------------------------
(SQL2005)
BackupLog DNNamewith no_log
godumptransaction DNNamewith no_log
goUSE DNName
DBCC SHRINKFILE (
Go--------------------------------------------------------------(SQL2008):
在SQL2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。
USE[master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GOALTER DATABASE DNName SET RECOVERY SIMPLE --簡單模式GOUSE DNName
GODBCC SHRINKFILE (N'DNName_Log' ,11, TRUNCATEONLY)
GO
GOALTER DATABASE DNName SET RECOVERY FULL--還原為完全模式GO
優點:此清除日誌所執行消耗的時間短,90GB的日誌在分鐘左右即可清除完畢,做完之後做個完全備份在分鐘內
即可完成。
缺點: 不過此動作最好不要經常使用,因為它的執行會帶來系統碎片。普通狀態下LOG和DIFF的備份即可截斷日誌。
此語句使用的恰當環境:當系統的日誌檔案異常增大或者備份LOG時間太長可能影響生產的情況下使用。
相關推薦
SQL Server 2008 收縮日誌 清空刪除大日誌文件
時間 server 系統 cti sim 個數 class alter sql2005 SQL2008 的收縮日誌 由於SQL2008對文件和日誌管理進行了優化,所以以下語句在SQL2005中可以運行但在SQL2008中已經被取消:(SQL2005)BackupLog
SQL Server 2008 收縮日誌 清空刪除大日誌檔案
SQL2008 的收縮日誌 由於SQL2008對檔案和日誌管理進行了優化,所以以下語句在SQL2005中可以執行但在SQL2008中已經被取消: (SQL2000) -- Prog: Xinsoft -- Time: 2005-03-26 10:34 SET N
SQL Server 2008和2005 清空刪除日誌檔案
SQL2005清空刪除日誌: Backup Log DNName with no_log '這裡的DNName是你要收縮的資料庫名,自己注意修改下面的資料庫名,我就不再註釋了。 go dump transaction DNName with no_log go USE
SQL2005、2008、2000 清空刪除日誌
SQL2005清空刪除日誌: 程式碼如下: Backup Log DNName with no_log '這裡的DNName是你要收縮的資料庫名,自己注意修改下面的資料庫名,我就不再註釋了。 go dump transaction DNName with no_log
實戰 SQL Server 2008 數據庫誤刪除數據的恢復
條件 實戰 ack body dba blog 生成 mode records 今天有個朋友很著急地打電話給我,他用delete語句誤刪除了SQL Server 2008數據庫中兩個表中的所有記錄,而這個數據庫之前沒有任何備份。讓我幫他解決一下,不然他要賠償
解決微軟SQL SERVER 2008 R2系統數資料庫 msdb的資料檔案MSDBData和日誌檔案MSDBLog過大問題
最近發現C盤總是空間不夠,一查發現msdbdata.mdf這個檔案有四十多G大了,於是找到一個解決方法如下,記錄一下備查.sp_delete_backuphistory (Transact-SQL)通過刪除早於指定日期的備份集條目,減小備份和還原歷史記錄表的大小。每次執行備份
SQL Server 2008 R2 CPU 和 記憶體 最大優化 分配
微軟SQL Server 2008 R2中的資源分配方式與SQL Server 2005中的方式相比是一種完全不同的過程。利用資源控制器,在SQL Server 2008 R2中解決方案供應商有切實可用的方法管理CPU和記憶體。 資源消耗是長期以來困擾使用SQL Serv
SQL Server 2008 清空刪除日誌檔案(瞬間日誌變幾M)
USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE DNName SET RECOVERY SIMPLE --簡單模式 GO USE DNName GO DBCC SHRINKFI
SQL Server 2008 清空刪除日誌檔案 130G日誌 10秒內變10M
SQL2005: Backup Log DNName with no_log '這裡的DNName是你要收縮的資料庫名,自己注意修改下面的資料庫名,我就不再註釋了。 go dump transaction DNName with no_log go USE DNName
SQL Server 2008 R2 清空資料庫中ldf日誌檔案
/************************************************************ * Sql Server 2008 R2 清空資料庫中ldf日誌檔案
SQL SERVER 2008 資料庫日誌檔案收縮的方法
資料庫隨著業務量的增多,日誌檔案巨大(超過300G),造成磁碟空間不夠用,進而後來的訪問資料庫請求無法訪問。 網上類似的方法也很多,但不可行,如下是我實踐過,可行的,將日誌檔案收縮至任意指定大小的方法: 第一步: 在SQL SERVER Management Studio
SQL Server 2008 刪除太大的日誌檔案
1. 資料庫分離: Microsoft SQL Server Management Studio -> 右鍵要分離的資料庫->Tasks->Detach...->Detach Database對話方塊中,在你需要分離的資料庫行列表中,選中“Drop C
SQL Server 2008獲取一個表的欄位,型別,長度,是否主鍵,是否為空,註釋等資訊
SELECT [表名]= case when a.colorder=1 then d. name else '' end , [表說明]= case when
SQL server 2008 新增,刪除欄位
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
SQL Server 2008 資料庫誤刪除資料的恢復
關鍵字:SQL Server 2008, recover deleted records 背景:誤刪除資料。 SQL Server中誤刪除資料的恢復本來不是件難事,從事務日誌恢復即可。但是,這個恢復需要有兩個前提條件: 1. 至少有一個誤刪除之前的資料庫完全備份。 2. 資料庫的恢
SQL Server 2008/2012 完整資料庫備份+差異備份+事務日誌備份 資料庫完整還原(一)
還原方案 資料庫級(資料庫完整還原) 還原和恢復整個資料庫。資料庫在還原和恢復操作期間會處於離線狀態。SQL SERVER不允許使用者備份或還原單個表。還原方案是指從一個或多個備份中還原資料、繼而恢復資料庫的過程。 不同恢復模式所支援的各種還原方案 簡單恢復
MS SQL Server 2008 r2附加無ldf日誌的mdf資料庫時報1813錯誤
解決辦法: 1、首先要備份好mdf檔案,不然樂子就大了。 2、在資料庫中新建一個需要附加同名的資料庫。例如【DM】 3、停止SQL Server服務 4、找到該資料庫所在的資料夾、並刪除DM_log.ldf與DM.mdf檔案 5、 把需要附加的資料庫【D
SQL Server 2008無日誌檔案附加資料庫
我們的“DBA”晚上執行了一個涉及使用者的操作,結果執行資料量太大,導致sql server存放日誌的磁碟空間不足,第二天早起發現論壇出現問題,不能發帖。收縮日誌不見效果的情況下,和其主管商議決定直接刪除日誌檔案.ldf 。沒有進一步驗證自己的方案,就付諸實施。 1、停服務; 2、刪除日誌檔案(直接物理刪除
SQL Server 2008 誤刪除資料的恢復
前言 在平時大家用到SQL Server的時候很多,也經常會對其進行各種操作,簡單的資料查詢或新增還沒什麼問題,頂多就是新增錯誤直接刪除就可以了,但如果你操作的是重要的資料庫,而且庫
SQL Server 2008 R2中 某XX資料庫 的事務日誌已滿 請參閱 sys.databases 中的 log_reuse_wait_desc 列
碰到此類問題首先想到的就是日誌空間問題以及磁碟問題,具體排查總結如下: 第一: 排查當前資料庫日誌檔案增長方式,確認是否做了相應的限制; 第二:檢查資料庫當前恢復模式 (完全、簡單、大容量日誌); 第三:排查當前資料庫日誌檔案所儲存 的磁碟空間