當前位置:首頁 » 編程語言 » sql資料庫日誌壓縮

sql資料庫日誌壓縮

發布時間: 2022-12-29 17:14:58

1. sql 2008如何壓縮資料庫及日誌文件

首先將你要將壓縮的資料庫設置為簡單日誌模式(這個就不用說了吧),然後右擊你的資料庫名稱,選擇任務-收縮-文件,即可打開資料庫壓縮窗口,後面的你就會操作了,你可以壓縮到你想到的比例。

2. sql server怎麼收縮日誌

1、首先選中資料庫右鍵--屬性 點擊

3. SQL Server 2000資料庫的事務日誌文件過大,如何將其縮小

守得雲開見月明,花了一個上午結合前輩的博客,終於弄好了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
==最後不要忘記實測下資料庫是否能夠正常使用==

網頁鏈接


4. 如何清空sql資料庫的日誌文件

SQLSERVER的資料庫日誌佔用很大的空間,下面提供三種方法用於清除無用的資料庫日誌文件x0dx0a方法一: x0dx0a1、打開查詢分析器,輸入命令 x0dx0aBACKUP LOG database_name WITH NO_LOG x0dx0a2、再打開企業管理器--右鍵要壓縮的資料庫--所有任務--收縮資料庫--收縮文件--選擇日誌文件--在收縮方式里選擇收縮至xxm,這里會給出一個允許收縮到的最小m數,直接輸入這個數,確定就可以了。 x0dx0ax0dx0a方法二: x0dx0a設置檢查點,自動截斷日誌 x0dx0ax0dx0a一般情況下,SQL資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大 x0dx0a1、設置資料庫模式為簡單模式:打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的伺服器-->雙擊打開資料庫目錄-->選擇你的資料庫名稱(如用戶資料庫cwbase1)-->然後點擊右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇「簡單」,然後按確定保存 x0dx0a2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的默認設置不用調整,直接點確定 x0dx0a3、收縮資料庫完成後,建議將您的資料庫屬性重新設置為標准模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據 x0dx0ax0dx0a方法三:通過SQL收縮日誌 x0dx0ax0dx0a把代碼復制到查詢分析器里,然後修改其中的3個參數(資料庫名,日誌文件名,和目標日誌文件的大小),運行即可 x0dx0ax0dx0aSET NOCOUNT ON x0dx0aDECLARE @LogicalFileName sysname, x0dx0a@MaxMinutes INT, x0dx0a@NewSize INT x0dx0ax0dx0aUSE tablename -- 要操作的資料庫名 x0dx0aSELECT @LogicalFileName = 'tablename_log', -- 日誌文件名 x0dx0a@MaxMinutes = 10, -- Limit on time allowed to wrap log. x0dx0a@NewSize = 1 -- 你想設定的日誌文件的大小(M) x0dx0ax0dx0a-- Setup / initialize x0dx0aDECLARE @OriginalSize int x0dx0aSELECT @OriginalSize = size x0dx0aFROM sysfiles x0dx0aWHERE name = @LogicalFileName x0dx0aSELECT 'Original Size of ' + db_name() + ' LOG is ' + x0dx0aCONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + x0dx0aCONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' x0dx0aFROM sysfiles x0dx0aWHERE name = @LogicalFileName x0dx0aCREATE TABLE DummyTrans x0dx0a(DummyColumn char (8000) not null) x0dx0ax0dx0aDECLARE @Counter INT, x0dx0a@StartTime DATETIME, x0dx0a@TruncLog VARCHAR(255) x0dx0aSELECT @StartTime = GETDATE(), x0dx0a@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' x0dx0ax0dx0aDBCC SHRINKFILE (@LogicalFileName, @NewSize) x0dx0aEXEC (@TruncLog) x0dx0a-- Wrap the log if necessary. x0dx0aWHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired x0dx0aAND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) x0dx0aAND (@OriginalSize * 8 /1024) > @NewSize x0dx0aBEGIN -- Outer loop. x0dx0aSELECT @Counter = 0 x0dx0aWHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) x0dx0aBEGIN -- update x0dx0aINSERT DummyTrans VALUES ('Fill Log') x0dx0aDELETE DummyTrans x0dx0aSELECT @Counter = @Counter + 1 x0dx0aEND x0dx0aEXEC (@TruncLog) x0dx0aEND x0dx0aSELECT 'Final Size of ' + db_name() + ' LOG is ' + x0dx0aCONVERT(VARCHAR(30),size) + ' 8K pages or ' + x0dx0aCONVERT(VARCHAR(30),(size*8/1024)) + 'MB' x0dx0aFROM sysfiles x0dx0aWHERE name = @LogicalFileName x0dx0aDROP TABLE DummyTrans x0dx0aSET NOCOUNT OFF x0dx0ax0dx0a方法四:刪除日誌文件。 x0dx0ax0dx0a此方法有一定的風險性,因為sql server的日誌文件不是即時寫入資料庫主文件的,如處理不當,會造成數據的損失。1、操作前請斷開所有資料庫連接。 x0dx0a2、分離資料庫 x0dx0a分離資料庫:企業管理器->伺服器->資料庫->cwbase1->右鍵->分離資料庫 x0dx0a分離後,cwbase1資料庫被刪除,但保留了數據文件和日誌文件 x0dx0a3、刪除log物理文件 x0dx0a刪除LOG物理文件,然後附加資料庫: 企業管理器->伺服器->資料庫->右鍵->附加資料庫 x0dx0a此法生成新的log,大小隻有500多k。 x0dx0ax0dx0a注意:建議使用第一種方法。操作前請確保所有操作員都已經推出系統,斷開資料庫的連接。 x0dx0ax0dx0a以上操作前,請務必做好數據備份!x0dx0ax0dx0a1.sql server 2005 清除日誌語句 x0dx0ax0dx0amp transaction 資料庫名稱 with no_log x0dx0abackup log 資料庫名稱 with no_log x0dx0adbcc shrinkdatabase(資料庫名稱)

5. SQL資料庫如何壓縮

1、首先從開始菜單著手,打開開始菜單欄,在菜單欄上找到我們已經安裝的SQL server 2008,單擊打開它。

6. 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

7. SQL Server 2000資料庫的事務日誌文件過大,如何將其縮小

拷獯穡涸贇QL Server中,所有對資料庫執行的更新操作都會記錄在資料庫的事務日誌文件中,除非將資料庫設為可自動收縮的或手動 的對資料庫進行了收縮,否則事務日誌文件將一直增長,直到達到事先設定的日誌文件增長上限或用盡所有可用的磁碟空間。如果當前的資料庫文件或日誌文件過大,可以使用以下兩個命令對其進行收縮:DBCC SHRINKDATABASE:收縮指定資料庫的所有數據和日誌文件的大小DBCC SHRINKFILE: 收縮資料庫的某個指定數據或日誌文件的大小 這兩個命令可以釋放資料庫中的空閑空間,並將資料庫或指定的資料庫文件收縮到指定的大小,但收縮後的數據文件或日誌文件的大小不會小於檔中現存的有效數據所佔空間的大小。 關於這兩個命令的具體使用方法,可以參考SQL Server 2000聯機叢書中的相應主題。另外,也可在SQL Server企業管理器中執行資料庫收縮,同樣是調用的以上兩個命令,效果類似。 在使用以上命令收縮日誌文件的時候需要注意,已寫入資料庫但未被截斷的事務日誌記錄是不會被收縮的,因為雖然這部分日誌記錄的信息已經寫入資料庫文件,但在使用事務日誌備份進行資料庫還原的時候,還將用到其中的信息。 對於使用簡單恢復模型的資料庫,事務日誌會在每次處理檢查點(CheckPoint)時自動被截斷。對於使用完全恢復模型或大容量日誌記錄恢復模型的資料庫,事務日誌只有在執行日誌備份(BACKUP LOG)時才會被截斷,這時事務日誌中記錄的信息被寫入事務日誌備份文件,而它們所佔用的這部分空間被標記為可用(即被截斷)。 截斷事務日誌並不會使日誌文件變小,但可以將其中的部分空間釋放供以後寫入新的日誌記錄使用。若要減少日誌文件的物理大小,則要使用上面提到的DBCC SHRINKDATABASE和DBCC SHRINKFILE命令。 在執行BACKUP LOG語句的時候,還可以使用WITH NO_LOG(或WITH TRUNCATE_ONLY,含義相同)參數,這時並不真正備份事務日誌,而只是截斷事務日誌中的非活動部分(這和普通的BACKUP LOG語句作用相同)。這適合於剩餘磁碟空間不夠進行事務日誌備份或不打算保留事務日誌中的非活動部分用於資料庫恢復的情況。 為避免事務日誌文件增長過快以致用盡所有磁碟空間的現象發生,一種辦法是將資料庫設為使用簡單恢復模型,這樣可以使SQL Server周期性的自動截斷事務日誌的非活動部分,並回收其佔用的空間供以後寫入事務日誌記錄使用。但這將使資料庫無法利用事務日誌備份還原到實時點,降低了資料庫的可靠性,因此一般不應用於生產型資料庫。 對於生產型資料庫,推薦的做法是使用完全恢復模型,並定期進行資料庫的完全備份和事務日誌備份。例如每周執行一次完全備份,每天執行一次事務日誌備份,這可以通過SQL Server企業管理器中的資料庫維護計劃向導很方便的實現(一般可以設為在每天夜裡業務不繁忙的某個時刻自動執行備份)。 通過定期執行資料庫的事務日誌備份,可以避免日誌文件的迅速增大,而使其保持一個比較穩定的大小。雖然資料庫備份文件也會佔用很多磁碟空間,但隨時可以將這些文件移到其他磁碟上或在不需要它們的時候將其刪除,而且可以在出現故障或誤操作的時候方便的進行資料庫的還原。 由於數據文件的大小是隨資料庫中數據量的增長而增長的,資料庫中已刪除的數據所佔的空間可以供新插入的資料使用;而在定期執行了事務日誌的備份後,我們可以將日誌文件的大小控制在一個比較合理的范圍。因此,一般不需要對資料庫進行收縮,也不推薦將資料庫設為自動收縮模式。建議僅在以下情況下執行資料庫的收縮:1、磁碟空間不足2、數據文件很大,但其中只包含較少量的數據(可能是以前有大量數據,但後來刪除了很多),並且預期今後資料庫中的數據量也不會很大。3、由於長期未進行事務日誌備份,導致事務日誌文件過大。減小事務日誌文件大小的另一種方法是:首先在該資料庫中執行CHECKPOINT命令,然後將該資料庫分離(Detach),再將與其對應的資料庫日誌文件(.ldf文件)改名或刪除或移動到其他目錄下,然後執行sp_attach_single_file_db存儲過程或在企業管理器中重新將其附加(Attach)。由於找不到原來的日誌文件,SQL Server將自動為該資料庫建立一個大小隻有504K的日誌文件。但這種方法必須暫時將資料庫離線,因此一般不適宜在生產環境中使用。如果當前資料庫的事務日誌文件過大,必須對其進行收縮的話,建議參照以下步驟:1、建議首先備份資料庫(但不是必需的):BACKUP DATABASE database_name TO backup_device
2、備份事務日誌:BACKUP LOG database_name TO backup_device如果不需要當前事務日誌中的記錄進行資料庫還原或沒有足夠的空間進行事務日誌備份的的話,也可僅執行以下命令截斷事務日誌:BACKUP LOG database_name WITH NO_LOG
3、收縮日誌文件:DBCC SHRINKFILE (log_file_name)其中log_file_name是事務日誌文件的邏輯名稱,可以在企業管理器中資料庫屬性的「事務日誌」頁中看到(如Northwind資料庫的默認事務日誌文件邏輯名稱為Northwind_log)。4、如果日誌文件仍然較大的話,可以嘗試重復執行一次BACKUP LOG WITH NO_LOG和DBCC SHRINKFILE命令。5、如果這時仍沒有明顯的效果,請執行DBCC OPENTRAN (database_name)檢查當前資料庫中是否存在長時間未提交的活動事務。有必要的話,可以斷開這些連接並重新嘗試截斷事務日誌和收縮日誌文件。6、日誌文件收縮完成後,建議立即執行一次資料庫的完全備份並根據實際需要制定適當的資料庫備份計劃。

8. sql2008中如何收縮資料庫日誌文件

解決方法:
方法一
右鍵選擇資料庫-》任務-》收縮-》文件-》文件類型-》日誌-》在釋放未使用的空間前重新組織頁

方法二(不推薦)
1 必須先改成簡單模式
2 然後用
----Logical Files :
--CMS1.5_Data
--CMS1.5_Log
DBCC SHRINKFILE (N'CMS1.5_Log' , 1)
GO

註:Data是數據文件,Log是日誌文件

9. 如何壓縮SQL Server 2005指定資料庫文件和日誌的大小

下面有兩個SQL語句可以達到在SQL
Server
2005/2008壓縮指定資料庫文件和日誌的大小的效果:
1、DBCC
SHRINKDATABASE
(Transact-SQL)
收縮指定資料庫中的數據文件和日誌文件的大小。
語法
DBCC
SHRINKDATABASE
(
'database_name'
|
database_id
|
0
[
,target_percent
]
[
,
{
NOTRUNCATE
|
TRUNCATEONLY
}
]
)
[
WITH
NO_INFOMSGS
]
參數
'database_name'
|
database_id
|
0
要收縮的資料庫的名稱或
ID。如果指定
0,則使用當前資料庫。
target_percent
資料庫收縮後的資料庫文件中所需的剩餘可用空間百分比。
NOTRUNCATE
通過將已分配的頁從文件末尾移動到文件前面的未分配頁來壓縮數據文件中的數據。target_percent
是可選參數。
文件末尾的可用空間不會返回給操作系統,文件的物理大小也不會更改。因此,指定
NOTRUNCATE
時,資料庫看起來未收縮。
NOTRUNCATE
只適用於數據文件。日誌文件不受影響。
TRUNCATEONLY
將文件末尾的所有可用空間釋放給操作系統,但不在文件內部執行任何頁移動。數據文件只收縮到最近分配的區。如果與
TRUNCATEONLY
一起指定,將忽略
target_percent。
TRUNCATEONLY
只適用於數據文件。日誌文件不受影響。

10. SQL Server 快速清除日誌文件的方法

SQL Server 2000快速清除日誌文件的方法

SQL Server 2000 資料庫日誌太大!

如何清理SQL Server 2000的日誌呢?

如何壓縮SQL Server 2000的日誌呢?

如何讓SQL Server 2000的日誌變小呢?

據我所知,辦法有很多很多,總結起來算有3類吧:

1、點幾下滑鼠,用SQL Server 2000管理工具中的企業管理器即可實現,待會兒詳解;

2、用SQL語句,在SQL Server 2000管理工具中的查詢分析器可以實現,此法高級人士喜歡用;

3、用第三方工具實現,原理嘛,我覺得應該是用SQL語句來實現的,這方法好,簡單易用,網上不乏精品工具,待會兒介紹一款。

一、現在我們詳細描述一下如何用企業管理器清理SQL 2000的日誌:

1、打開企業管理器,右擊要處理的資料庫--》屬性--》選項--》故障還原,選「簡單」--》確定。如圖:

2、右擊要處理的資料庫--》所有任務--》收縮資料庫--》什麼也不動,默認第一個是0%,其它兩個未選中,點確定--》如果您以前資料庫日誌文件大於1M那麼現在再看看,是不是只有1M了呢。

3、操作完後--》按第一步,把「故障還原」,選「完全」,傳說中SQL Server 2000 有自動還原功能,說是如果非法關機等因素造成數據丟失可以自動回滾,另外可以用程序來實現操作回滾,所以最好是讓故障還原是「完全」。

4、這樣便實現了「SQL Server 2000 資料庫日誌太大!如何管理,清除,變小,壓縮它」中的清除,變小,壓縮了,至於怎麼管理,自己看著辦吧,我一般只會用到這些,再有深入研究的話我會寫上來的`。

二、現在我們介紹用第三方SQL Server 日誌清理工具來清理日誌,簡單易用高效,推薦用這個方法。

我喜歡用 SqlServer日誌清除專家 v3.5 來實現這個功能。界面如下:

資料庫那裡一般會將整個伺服器的資料庫名都列舉出來,需要選擇為自己賬戶能管理到的那個,我這里DB_iszip賬戶能管理的是 iszip ,選擇好之後,點「清除日誌」按鈕,然後SQL Server 2000的日誌就被清理好了,此時你去伺服器看你資料庫日誌佔用空間就只有1M了。

;
熱點內容
ftp伺服器被動模式配置 發布:2025-07-04 05:17:32 瀏覽:329
電動車小龜有哪些配置 發布:2025-07-04 05:16:18 瀏覽:38
mysql同步存儲過程 發布:2025-07-04 05:14:32 瀏覽:662
安卓手機如何控制空調 發布:2025-07-04 05:09:06 瀏覽:154
新潔爾滅用於物體表面怎麼配置 發布:2025-07-04 05:03:28 瀏覽:829
生活中的雲伺服器 發布:2025-07-04 05:01:55 瀏覽:744
三星g6700c原始密碼是多少 發布:2025-07-04 04:49:41 瀏覽:726
網頁編程代碼 發布:2025-07-04 04:47:25 瀏覽:805
發消息時用到什麼密碼 發布:2025-07-04 04:41:47 瀏覽:980
3個密碼箱能裝多少錢 發布:2025-07-04 04:39:36 瀏覽:11