1. 程式人生 > >SQL Server 2008 收縮日誌 清空刪除大日誌檔案

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 (

2)
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
USE[master]GOALTER DATABASE DNName SET RECOVERY FULLWITH NO_WAIT
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 列

            碰到此類問題首先想到的就是日誌空間問題以及磁碟問題,具體排查總結如下: 第一: 排查當前資料庫日誌檔案增長方式,確認是否做了相應的限制; 第二:檢查資料庫當前恢復模式 (完全、簡單、大容量日誌); 第三:排查當前資料庫日誌檔案所儲存 的磁碟空間