sql2008資料庫清理日誌
A. 如何清理sql2008日誌文件
SQL2008清空刪除日誌:
方法一:
USE [master]GOALTER DATABASE AFMS SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE AFMS SET RECOVERY SIMPLEGOUSE AFMSGODBCC SHRINKFILE (N'AFMS_Log' , 11, TRUNCATEONLY)GOUSE [master]GOALTER DATABASE AFMS SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE AFMS SET RECOVERY FULLGO
'在SQL2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。 USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY SIMPLE --簡單模式GOUSE DNNameGODBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY) GO '這里的DNName_Log 如果不知道在sys.database_files里是什麼名字的話,可以用以下注釋的語句進行查詢 'USE DNName 'GO 'SELECT file_id, nameFROM sys.database_files; 'GOUSE [master]GOALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY FULL --還原為完全模式GO
B. 怎樣清理或者刪除MSSQL資料庫日誌文件
資料庫的性能是DBA都需要重點關注的,日誌文件的增多嚴重影響資料庫的性能,本文將為您介紹SQLServer刪除日誌文件的方法,供您參考,希望對您有所幫助。
資料庫在使用過程中會使日誌文件不斷增加,使得資料庫的性能下降,並且佔用大量的磁碟空間。SQL Server資料庫都有log文件,log文件記錄用戶對資料庫修改的操作。可以通過直接刪除log文件和清空日誌在清除資料庫日誌。
1、刪除LOG
1.1 分離資料庫
分離資料庫之前一定要做好資料庫的全備份,選擇資料庫——右鍵——任務——分離。
附加資料庫之後將生成新的日誌文件log,新的日誌文件的大小事504K。
1.4 也可以通過命令才完成以上的操作
use master;
exec sp_detach_db @dbname='資料庫名';
exec sp_attach_single_file_db @dbname='資料庫名',@physname='D:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATATestDB.mdf'
Sp_detach_db:分離資料庫;
sp_attach_single_file_db:附加單個資料庫文件;在上述代碼中只附加了數據文件,而未附加日誌文件,言下之意就是刪除了日誌文件。
該命令在SQL Server 2005和2000支持,SQL Server 2008不支持該命令。
2. 清空日誌
DUMP TRANSACTION 資料庫名 WITH NO_LOG
3. 收縮資料庫文件
DBCC SHRINKFILE ('TestDB_log',1)
SQL Server中「數據收縮」詳解
4. 截斷事務日誌
BACKUP LOG TestDB WITH NO_LOG
該命令在SQL Server 2008也是不支持,在SQL Server 2005和2000可以使用。
C. sql server 2008里圖解怎麼刪除日誌
USE[master]
GO
ALTERDATABASE資料庫名稱SETRECOVERYSIMPLEWITHNO_WAIT
GO
ALTERDATABASE資料庫名稱SETRECOVERYSIMPLE--簡單模式
GO
USE資料庫名稱
GO
DBCCSHRINKFILE(N'資料庫名稱_Log',11,TRUNCATEONLY)
GO
USE[master]
GO
ALTERDATABASE資料庫名稱SETRECOVERYFULLWITHNO_WAIT
GO
ALTERDATABASE資料庫名稱SETRECOVERYFULL--還原為完全模式
GO
D. SQL Server 2008 R2下如何清理資料庫日誌文件
廢話不多說,直接上代碼,清理後日誌文件為1M[sql] USE [master] GO ALTER DATABASE [資料庫名] SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE [資料庫名] SET RECOVERY SIMPLE GO USE [資料庫名] GO DBCC SHRINKFILE (N'[資料庫日誌文件名稱]' , 0,TRUNCATEONLY) GO USE [master] GO ALTER DATABASE [資料庫名] SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE [資料庫名] SET RECOVERY FULL GO --查詢指定資料庫的日誌文件名稱 USE [資料庫名] GO SELECT name FROM SYS.database_files WHERE type_desc='LOG' 08R2通過,其他版本未測試
E. 如何清除SQL資料庫日誌,清除後對資料庫有什麼影響
教你如何清除SQL日誌
1.打開查詢分析器,輸入命令
DUMP TRANSACTION 資料庫名 WITH NO_LOG
2.再打開企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了。
清除Log有兩種方法:
1.自動清除法
開放資料庫選項 Trunc Log on Chkpt,使資料庫系統每隔一段時間自動清除Log。此方法的優點是無須人工干預,由SQL Server自動執行,並且一般不會出現Log溢滿的情況;缺點是只清除Log而不做備份。
2.手動清除法
執行命令「mp transaction」來清除Log。以下兩條命令都可以清除日誌:
mp transaction with truncate_only
mp transaction with no_log
通常刪除事務日誌中不活躍的部分可使用「mp transaction with trancate_only」命令,這條命令寫進事務日誌時,還要做必要的並發性檢查。SYBASE提供「mp transaction with no_log」來處理某些非常緊迫的情況,使用這條命令有很大的危險性,SQL Server會彈出一條警告信息。為了盡量確保資料庫的一致性,你應將它作為「最後一招」。
以上兩種方法只是清除日誌,而不做日誌備份,若想備份日誌,應執行「mp transaction database_name to mpdevice」命令。
清除後對資料庫沒有影響
F. sqlserver2008和sqlserver2012日誌文件過大,有什麼方法清理嗎
清理sql server 2008日誌步驟如下:
1.將資料庫設置成 簡單 模式
選擇要收縮的資料庫,點右鍵 屬性->選項,選擇 簡單模式
2.選擇任務->收縮->文件
3.選擇日誌
或者用如下語句
代碼
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE
GO
USE DNName
GO
DBCC SHRINKFILE (N'LogFileName' , 0,TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY FULL
GO
SQL Server 2000要清理日誌使用的是mp語句,但是在SQL Server2008里,這個語句不管用了,如果日誌文件很大,比如超過1G,就需要截斷一下日誌文件以加快sqlserver的運行速度,在SQL Server2008里,方法改為:
有資料庫 xxdb 在 SQL Server 2008 下,日誌文件已經超過1G。
以往使用BACKUP語句-BACKUP LOG xxdb WITH NO_LOG 已經失效,在查閱 MSDN 之後發現 MS 提供的標准截斷日誌語句已經變為了 「BACKUP LOG 語句不指定 WITH COPY_ONLY」
使用語句 BACKUP LOG xxdb to disk='x:\work\1.bak' 成功將日誌文件備份,並截斷日誌文件。這里x:代表你想要備份文件的盤符。
然後使用 DBCC SHRINKFILE (xxdb_log,10) 收縮日誌文件到 10M
總結:
完整的收縮日誌文件的 T-SQL 語句:
BACKUP LOG xxdb to disk='x:\work\1.bak'
DBCC SHRINKFILE (xxdb_log,10)
GO
--
BACKUP LOG <db_name> to disk=<'backupfilename'>
DBCC SHRINKFILE (<log_filename>,10)
GO
裡面的x:\work是隨意設置的。當然也可以收縮到比如5M或1M。
在用的:
USE[master]
GO
_WAIT
GO
--簡單模式
GO
USEYHDB
GO
DBCCSHRINKFILE(N'YHDB_log', 11,TRUNCATEONLY)
GO
USE[master]
GO
_WAIT
GO
--還原為完全模式
GO
G. 如何清理sql server 已滿的資料庫日誌
具體方法有3種。
方法一:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--
no_log和truncate_only是在這里是同義的,隨便執行哪一句都可以。
第二步:
1.收縮特定資料庫的所有數據和日誌文件,執行:
dbcc
shrinkdatabase
(database_name,[,target_percent])
--
database_name是要收縮的資料庫名稱;target_percent是資料庫收縮後的資料庫文件中所要的剩餘可用空間百分比。
2.收縮一次一個特定資料庫中的數據或日誌文件,執行
dbcc
shrinkfile(file_id,[,target_size])
--
file_id是要收縮的文件的標識
(id)
號,若要獲得文件
id,請使用
file_id
函數或在當前資料庫中搜索
sysfiles;target_size是用兆位元組表示的所要的文件大小(用整數表示)。如果沒有指定,dbcc
shrinkfile
將文件大小減少到默認文件大小。兩個dbcc都可以帶上參數notruncate或truncateonly,具體意思查看聯機幫助.
方法二:
第一步:
先備份整個資料庫以備不測
。
第二步:
備份結束後,在query
analyzer中執行如下的語句:
exec
sp_detach_db
yourdbname,true
--卸除這個db在mssql中的注冊信息
第三步:
到日誌的物理文件所在的目錄中去刪除該日誌文件或者將該日誌文件移出該目錄
第四步:
在query
analyzer中執行如下的語句:
exec
sp_attach_single_file_db
yourdbname,'
d:\mssql\data\yourdbname_data.mdf
'
--以單文件的方式注冊該db,如果成功則mssql將自動為這個db生成一個500k的日誌文件。
方法三:
1.
進入企業管理器,選中資料庫,比如demo
2.
所有任務->分離資料庫
3.
到資料庫文件的存放目錄,將muonline_log.ldf文件刪除,以防萬一,你可以拷出去
4.
企業管理器->附加資料庫,選muonline,這個時候你會看見日誌文件這項是一個叉,不要緊,繼續,此時資料庫就會提示你該資料庫無日誌是否創建一個新的,確定就是了。
5.
記得資料庫重新附加後用戶要重新設置一下。
如果以後,不想要它變大:
sql2000下使用:
在資料庫上點右鍵->屬性->選項->故障恢復-模型-選擇-簡單模型。
或用sql語句:
alter
database
資料庫名
set
recovery
simple
H. 如何清除sql2008日誌文件
在SQL2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。
方案一:完全命令模式
USE[master]
GO
ALTERDATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTERDATABASE DNName SET RECOVERY SIMPLE --簡單模式
GO
USE DNName
GO
DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
GO
USE[master]
GO
ALTERDATABASE DNName SET RECOVERY FULLWITH NO_WAIT
GO
ALTERDATABASE DNName SET RECOVERY FULL --還原為完全模式
GO
方案二:部分命令模式 + 任務-收縮-文件(單個資料庫)
ALTERDATABASE DNName SET RECOVERY SIMPLE --簡單模式
GO
右鍵-任務-收縮-文件-確定 下來資料庫的日誌只保留了1M
ALTERDATABASE DNName SET RECOVERY FULL --還原為完全模式
GO
優點:此清除日誌所運行消耗的時間短,90GB的日誌在分鍾左右即可清除完畢,做完之後做個完全備份在分鍾內即可完成。缺點: 不過此動作最好不要經常使用,因為它的運行會帶來系統碎片。普通狀態下LOG和DIFF的備份即可截斷日誌。此語句使用的恰當環境:當系統的日誌文件異常增大或者備份LOG時間太長可能影響生產的情況下使用。