⑴ MSSQL資料庫日誌的壓縮與清除技巧
一般情況下,SQL資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大:
1、設置資料庫模式為簡單模式:打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server--SQL Server組--雙擊打開你的伺服器--雙擊打開資料庫目錄--選擇你的資料庫名稱(如論壇資料庫Forum)--然後點擊右鍵選擇屬性--選擇選項--在故障橘罩答還原的模式中選擇"簡單",然後按確定保存。
2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的默認設置不用悶冊調整,直接點確定。
3、收縮資料庫圓慧完成後,建議將您的資料庫屬性重新設置為標准模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據。
方法二
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE
tablename
-- 要操作的資料庫名
SELECT@LogicalFileName = 'tablename_log',-- 日誌文件名
@MaxMinutes = 10,
-- Limit on time allowed to wrap log.
@NewSize = 1
-- 你想設定的日誌文件的大小(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
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter
INT,
@StartTime DATETIME,
@TruncLogVARCHAR(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()) -- time has not expired
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
⑵ SQL資料庫如何壓縮
可以使用DBCC
SHRINKDATABASE
和DBCC
SHRINKFILE
命令來壓縮資料庫。
其中DBCC
SHRINKDATABASE
命令對資料庫進行壓縮,DBCC
SHRINKFILE
命令對資料庫中指定的文件進行壓縮。
DBCC
SHRINKDATABASE
命令語法如下:
DBCC
SHRINKDATABASE
(database_name
[,
target_percent]
[,
{NOTRUNCATE
|
TRUNCATEONLY}]
)
各參數說明如下:
target_percent:
指定將資料庫壓縮後,未使用的空間占資料庫大小的百分之幾。如果指定的百分比過大,超過了壓縮前未使用空間所佔的比例,則資料庫不會被壓縮。並且壓縮後的資料庫不能比資料庫初始設定的容量小。
NOTRUECATE:
將資料庫縮減後剩餘的空間保留在資料庫,中不返還給操作系統
,如果不選擇此選項,則剩餘的空間返還給操作系統。
TRUNCATEONLY
:
將資料庫縮減後剩餘的空間返還給操作系統。使用此命令時SQL
Server
將文件縮減到最後一個文件分配,區域但不移動任何數據文件。選擇此項後,target_percent
選項就無效了。
⑶ SQL資料庫如何壓縮
1、首先從開始菜單著手,打開開始菜單欄,在菜單欄上找到我們已經安裝的SQL server 2008,單擊打開它。
⑷ 求助:SQL壓縮資料庫語句
1.清空日誌
DUMP TRANSACTION ABCD WITH NO_LOG
2.截斷事務日誌:
BACKUP LOG ABCD WITH NO_LOG
--收縮資料庫
DBCC SHRINKDATABASE(ABCD)
⑸ sql server 資料庫怎樣壓縮資料庫日誌文件
SQL Server資料庫壓縮日誌文件的方法主要有三種。方法一:首先執行備份日誌操作,使用backup log database_name with no_log或backup log database_name with truncate_only命令。然後收縮資料庫文件,可以使用dbcc shrinkdatabase或dbcc shrinkfile命令,前者適用於收縮整個資料庫文件,後者適用於收縮特定文件,參數notruncate或truncateonly具體含義需參閱在線幫助。
方法二:首先備份整個資料庫以防意外,執行exec sp_detach_db yourDBName,true命令卸除資料庫注冊信息。接著到日誌文件所在目錄刪除或移除日誌文件。然後執行exec sp_attach_single_file_db yourDBName,' d:\mssql\data\yourDBName_data.mdf '命令重新注冊資料庫,MSSQL會自動生成一個新的500K日誌文件。
方法三:使用企業管理器工具,首先分離資料庫,然後刪除日誌文件,如果需要可以備份。最後重新附加資料庫,此時資料庫會提示是否創建新的日誌文件,確認即可。此外,如果希望以後日誌文件不再增長,可以將資料庫恢復模式設置為簡單模型。在SQL Server 2000中,可以在資料庫屬性中選擇簡單恢復模式,或者使用SQL語句alter database 資料庫名 set recovery simple來實現。
通過以上三種方法,可以有效地壓縮SQL Server資料庫的日誌文件,從而釋放空間和提高性能。