2008資料庫日誌收縮
1. 對sql Server 2008資料庫進行收縮時,會遇到死鎖現象,如何解決。
樓主 可以試試下面的方法:
清空日誌
DUMP TRANSACTION 庫名
WITH
NO_LOG
2.截斷事務日誌:
BACKUP LOG 資料庫名 WITH
NO_LOG
3.收縮資料庫文件
資料庫名--右擊--任務--收縮--文件
--文件類型選擇日誌--收縮操作選擇第二個 將文件收縮到0 ,確定就可以了
4. 也可以用SQL語句來完成
--收縮資料庫
DBCC SHRINKDATABASE(客戶資料)
--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from
sysfiles
DBCC SHRINKFILE(1)收縮的時候把恢復模式改為簡單 否則收縮不了
希望解決了樓主的問題
2. SQL 2008的資料庫文件太大,如何減小啊
收縮資料庫
一般情況下,SQL資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大
1、設置資料庫模式為簡單模式:打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的伺服器-->雙擊打開資料庫目錄-->選擇你的資料庫名稱(如論壇資料庫Forum)-->然後點擊右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇「簡單」,然後按確定保存
2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的默認設置不用調整,直接點確定
3、收縮資料庫完成後,建議將您的資料庫屬性重新設置為標准模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據
3. sql收縮資料庫日誌的幾種辦法
在SQL Server 2000/2005中可以快速壓縮日誌log文件,通過SQL,
方法一:
--BigData為資料庫名
DUMPTRANSACTIONBigDataWITHNO_LOG
BACKUPLOGBigDataWITHNO_LOG
DBCCSHRINKDATABASE(BigData)
執行以上語句可以快速壓縮日誌文件到1M。
但是以上語句中前兩行在SQL Server 2008下無法執行 ,
第一行提示「Incorrect syntax near the keyword 'TRANSACTION'.」
第二行提示「One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. 」
第三行可以執行。但日誌log文件沒有任何變化。
原來SQL Server 2008已經不再支持DUMPTRANSACTION和BACKUP LOG WITH NO_LOG,
sql Server 2005說明中明確:包含 DUMP 語句是為了向後兼容。而 後續版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發工作中使用該功能,並著手修改當前還在使用該功能的應用程序。 使用 BACKUP。
SQL Server 2008說明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 選項已廢止。使用完整恢復模式或大容量日誌恢復模式時,如果必須刪除資料庫中的日誌備份鏈,請切換至簡單恢復模式。有關詳細信息,請參閱有關從完整恢復模式或大容量日誌恢復模式切換的注意事項。
方法二:
useDB_NAME
sp_dboptionDB_NAME,"trunc.logonchkpt.",true
checkpoint
sp_dboptionDB_NAME,"autoshrink",true
方法三:(請提前備份文件!!)
Detach資料庫。
刪除log文件。
附加資料庫,選移除log文件,此時SQL Server 會自動重新建立一個512K 的Log 文件。
方法四:
USEBigData;
GO
BACKUPLOGDATABASENAMETODISK='d: est.bak'
--.
DBCCSHRINKFILE(Bigdata_Log,1);
GO
4. sql server 2008 r2如何收縮資料庫和文件
1、右擊資料庫選擇,打開Files窗口
2、Files窗口,File type 選擇 Log,單擊OK完成日誌收縮。
按以上方法操作沒有效果,原因是資料庫的恢復模式不是簡單模式,只需要將恢復模式改為簡單模式即可用以上操作來收縮日誌,方便又好用。
將資料庫恢復模式改為簡單模式方法:
1、右擊資料庫選擇屬性,彈出窗口如下圖,選擇Options選項,將 Recovery Model 改為 Simple 即可。
按如下方法操作也可收縮日誌:
1、當資料庫恢復模式為簡單時。使用dbcc shrinkfile (logfile_name,target_size)命令來完成。如
use mydb
dbcc shrinkfile (mydb_log,10) --將mydb_log收縮至10m
2、當資料庫恢復模式為完全時。可以先將資料庫模式改為簡單模式,再使用上述方法來進行。
use master
alter database mydb set recovery simple
dbcc shrinkfile (mydb_log,10) --將mydb_log收縮至10m
也可以直接備份事務日誌文件後再收縮:
use master
backup log mydb to disk='d:/dd.bak'
use mydb
dbcc shrinkfile (mydb_log,10) --將mydb_log收縮至10m;
3、通過分離資料庫,然後再刪除事務日誌文件,再附加mdf數據文件,也可以達到某種意義上的事務日誌收縮。
以下是有關日誌文摘
對於每一個資料庫來講,都需要至少一個事務日誌文件。事務日誌文件是整個資料庫的血液,如果沒有事務日誌的話,那麼將無法進行任何操作。
事務日誌有什麼東西?
事務日誌記錄著在相關資料庫上的操作,同時還存儲資料庫恢復(recovery)的相關信息。
事務日誌與資料庫恢復(recovery)是密切相關的,其實資料庫在啟動時,便會進行相關的恢復(recovery)操作,如下所示。當然,在資料庫還原時,也可以指定手工恢復(recovery).任何在資料庫上的改變,如果在事務日誌內被標記為已提交,並用一個LSN(LOG SEQUENCE NUMBER)來標識,同時相關改變就會體現在數據文件上,而被標記為未提交的改變將不會體現在數據文件上。
2010-01-12 18:31:48.72 spid7s Recovery is complete. This is an informationa message only. No user action is required.
事務日誌文件還存儲著資料庫需要回滾的相關信息。在SQL Server資料庫上,默認是隱式提交的,也就是說在查詢分析器裡面進行的每一個操作,在操作完成後,都是默認已經commit,但如果通過指定begin tran 和rollback tran的命令來標識事務時,rollback tran就需要使用事務日誌內的相關信息才可以回滾。當然,如果SQL Server遇到相關錯誤時,如死鎖,那麼也會產生一個內部回滾,這些都需要用到事務日誌文件。
為什麼要收縮事務日誌?
收縮日誌的原因有很多種,有些則是考慮空間不足,有些則是應用程序限制導致的,一般情況下,是不建議對事務日誌進行其他改變的,如需要控制事務日誌的大小,則可以通過安排事務日誌備份來解決。如果確定事務日誌包含將不再使用的未使用空間,則可以通過減少事務日誌的大小,以便回收過多空間。但這種情況對於一個DBA來講,應該要盡量避免。
僅當資料庫處於聯機狀態,而且至少一個虛擬日誌文件可用時,收縮才會發生。在某些情況下,直到下一個日誌截斷後,才能收縮日誌。
事務日誌收縮的原理:
每個事務日誌由多個虛擬日誌文件組成(virtual log file).虛擬日誌文件沒有固定的大小,也沒有固定的個數。在創建事務日誌文件或者擴展事務日誌文件時,SQL SERVER便會自動創建合適大小的虛擬日誌文件,DBA無法控制虛擬日誌文件的大小和個數。在擴展日誌文件後,虛擬文件的大小是現有日誌大小和新文件增量大小之和。因此,如果在創建資料庫時,對資料庫指定了比較小的初始大小,又指定了比較小的日誌增長量,隨著事務日誌的自動擴展,虛擬日誌文件個數會越來越多,從而影響了資料庫性能。因此,在創建資料庫時,盡量指定比較合適的初始事務日誌大小,同時指定合理的事務日誌增長量,這點可以參考數據文件的標准。如果大於10G或者更大的話,則指定固定的增長量,如果比較小,則指定按百分比的增長量來進行。
詳情參考
http://hi..com/lxiangshanyu/item/7057ce04081efae9fe240d64
5. sql2008下的鏡像資料庫怎樣做日誌收縮
這個問題我前幾天正好碰上,所以,相關的關鍵點告訴你
**********特別提示:《在操作之前請備份》************:
1、SQL SERVER 2008 的日誌會越來越大,如果是用於生產的,可能會大到可怕,反正我的資料庫,前幾天一看,不到1個月就十多個G的日誌文件。
2、要收縮、清除其實很簡單,關鍵點就一個:先把資料庫的恢復模式從默認的「完整」改為「簡單」。具體做法:對資料庫點 右鍵 -》屬性-》左邊 選擇頁 中 點 「選項」-》找到 「恢復模式」,改成「簡單」。
3、然後對資料庫點 右鍵 -》任務-》收縮 -》文件 -》出來的界面中,文件類型 選 「日誌」,點「確定」鈕-》OK了。
4、再次提示,在操作之前請備份,雖然我在操作中沒有碰上任務問題,但不保證你不出問題。
5、至於日誌文件縮完了,你是否要把它改回「完整」模式,你自個看著辦,我是讓它一直簡單,因為,以我的技術,要真的資料庫崩潰了,有日誌問題也是「然並卵」,反正我是一天自動兩次異盤備份,加每二小時增量備份,最後再加雙機熱備(用軟體實現的,那個軟體據說要賣幾萬一套,具體叫什麼就不說了,省得別人說我打廣告,呵呵)。
6、看了一下微軟的資料庫鏡像實現方案相關的東西,感覺太難了,不靠譜,有興趣你可以去試試。
7、最後,順便說,資料庫的恢復模式的選擇,對當前資料庫的運行應該是沒有什麼影響的,也許對於會用日誌文件進行數據查看和調整的人有用。
6. 如何收縮資料庫日誌文件大小
1.先分離資料庫,然後刪除日誌文件,再附件資料庫。
2.收縮文件,選擇日誌文件,設置將文件收縮到0M,試了一下,只能從65G收縮到55G,也就是只釋放了未使用的空間。方法 二、
1.選中資料庫,右鍵屬性/選項,把恢復模式從「完整」改為「簡單」。
2.選中資料庫,右鍵任務/收縮文件,選擇日誌文件,設置將文件收縮為0M,確定。
3.再將恢復模式從「簡單」-「完整」即可。
7. Sql 2008如何壓縮資料庫及日誌文件
首先將你要將壓縮的資料庫設置為簡單日誌模式(這個就不用說了吧),然後右擊你的資料庫名稱,選擇任務-收縮-文件,即可打開資料庫壓縮窗口,後面的你就會操作了,你可以壓縮到你想到的比例。
8. 資料庫日誌文件過大如何收縮
網頁鏈接我是用這個方法收縮的,可以將日誌收縮到1MB
守得雲開見月明,花了一個上午結合前輩的博客,終於弄好了sqlserver2008的資料庫日誌收縮到1MB,分享給大家
# 方法步驟
1、執行SQL語句改成「簡單模式」
2、收縮資料庫
3、執行SQL語句改回「完全模式」
## 第一步:執行SQL語句改成「簡單模式」
USE [master]
GO
ALTER DATABASE SlowXWebDB (改成你需要進行收縮的資料庫名) SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE SlowXWebDB (改成你需要進行收縮的資料庫名) SET RECOVERY SIMPLE --改成簡單模式
GO
## 第二步:進行資料庫操作
相關界面截圖和操作
假定:
資料庫名:SlowXWebDB
日誌文件名:SlowXWebDB_Log
## 第三步:執行SQL語句改成「完全模式」
USE [master]
GO
ALTER DATABASE SlowXWebDB (改成你需要進行收縮的資料庫名)SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE datebaseName(改成你需要進行收縮的資料庫名)SET RECOVERY FULL --還原為完全模式
GO
==最後不要忘記實測下資料庫是否能夠正常使用==
網頁鏈接
9. Sql server2008的ldf文件過大怎麼收縮
在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
如何收縮資料庫日誌
10. sql server 2008 日誌收縮
1天增加7G,不算不正常。日誌有完全日誌和簡單日誌的分別,在資料庫屬性中設置為簡單日誌,可以降低增長。
自動收縮日誌可以,代碼如下:
backup log tempdb with NO_LOG
dbcc shrinkdatabase (tempdb,10)