DBCC SHRINKFILE ¸í·É ¶Ç´Â DBCC SHRINKDATABASE ¸í·ÉÀ» »ç¿ëÇÒ ¶§ Æ®·£Àè¼Ç ·Î±×°¡ ÁÙ¾îµéÁö ¾Ê´Â ÀϹÝÀûÀÎ ÀÌÀ¯°¡ ¸î °¡Áö ÀÖ½À´Ï´Ù. º» ¹®¼¿¡¼´Â ÀÌ¿¡ ´ëÇØ °£·«ÇÏ°Ô ¼³¸íÇϸç, SQL Server Books OnlineÀÇ "DBCC SHRINKFILE" ¹× "DBCC SHRINKDATABASE" Ç׸ñ¿¡¼ ÀÚ¼¼ÇÏ°Ô ´Ù·ì´Ï´Ù.
- Microsoft SQL Server 7.0¿¡¼ SHRINKFILE ¹× SHRINKDATABASE ¸í·ÉÀº ÁÙÀÌ·Á´Â ¸ñÇ¥ Å©±â¸¦ ¼³Á¤ÇÕ´Ï´Ù. °¢ ·Î±× ÆÄÀÏÀº ÀÌµé ¸í·É¿¡ ÀÇÇØ Ç¥½ÃµÇÁö¸¸, ½ÇÁ¦·Î ÆÄÀÏÀ» ÁÙÀ̱â À§ÇØ ·Î±× ¹é¾÷À̳ª ·Î±× ÀÚ¸£±â¸¦ ½ÃµµÇÏÁö´Â ¾Ê½À´Ï´Ù. µû¶ó¼ SHRINKFILE ¶Ç´Â SHRINKDATABASE ¸í·ÉÀ» »ç¿ëÇÑ ÈÄ¿¡´Â ·Î±× ÀÚ¸£±â ¸í·ÉÀ» ÅëÇØ ÆÄÀÏÀ» ÁÙÀ̱â Àü¿¡ ·Î±×¸¦ ÀÚ¸£´Â ¸í·ÉÀ» ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù.
- ¾Æ·¡ÀÇ ±âÁØ¿¡¼ Çã¿ëÇÏ´Â Å©±âº¸´Ù ÀÛÀº Å©±â·Î ·Î±×¸¦ ÁÙÀÏ ¼ö ¾ø½À´Ï´Ù.
- ¿ø·¡ Å©±âº¸´Ù ·Î±×¸¦ ÀÛ°Ô ÁÙÀÌ·Á¸é °³º° ÆÄÀÏÀ» DBCC SHRINKFILEÀ» »ç¿ëÇÏ¿© ÁÙ¿©¾ß ÇÕ´Ï´Ù. DBCC SHRINKDATABASE¸¦ »ç¿ëÇÏ¸é ·Î±×¸¦ ¿ø·¡ Å©±â³ª ¸í½ÃÀûÀ¸·Î Á¤ÀÇÇÑ Å©±âº¸´Ù ÀÛ°Ô ÁÙÀÏ ¼ö ¾ø½À´Ï´Ù. CREATE DATABASE¿¡ ¸ðµç ¸í½ÃÀû ALTER DATABASE ¸í·ÉÀÌ ´õÇØÁö¹Ç·Î ¿ø·¡ Å©±â´Â ·Î±×ÀÇ Å©±â·Î Á¤Àǵ˴ϴÙ. ·Î±×ÀÇ ÀÚµ¿ Áõ°¡´Â ¿ø·¡ Å©±â¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.
- ½ÇÁ¦ ·Î±× ÆÄÀÏÀº ÇØ´ç ·Î±× ÆÄÀÏ ³»¿¡¼ ÇöÀç »ç¿ëµÇ°í ÀÖ´Â °ø°£ÀÇ ¾çº¸´Ù ÀÛÀ» ¼ö ¾ø½À´Ï´Ù. DBCC SQLPERF (LOGSPACE) ¸í·ÉÀ» »ç¿ëÇÏ¸é »ç¿ëµÈ °ø°£ÀÇ ¾çÀ» ¸ð´ÏÅÍ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
- Model µ¥ÀÌÅͺ£À̽º ·Î±×ÀÇ ÇöÀç Å©±â´Â ÇØ´ç ¼¹ö¿¡ ÀÖ´Â ¸ðµç µ¥ÀÌÅͺ£À̽º ·Î±×ÀÇ ÃÖ¼Ò Å©±âÀÔ´Ï´Ù. ±âº»ÀûÀ¸·Î Model µ¥ÀÌÅͺ£À̽ºÀÇ ·Î±×´Â 1MBº¸´Ù ÀÛ½À´Ï´Ù.
- ·Î±×¸¦ °¡»ó ·Î±× ÆÄÀÏ(VLF) °æ°è±îÁö¸¸ ÁÙÀÏ ¼ö ÀÖÀ¸¹Ç·Î °ø°£À» »ç¿ëÇϰí ÀÖÁö ¾ÊÀº °æ¿ì¿¡µµ ·Î±× ÆÄÀÏÀ» VLFº¸´Ù ÀÛÀº Å©±â·Î ÁÙÀÌ´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù. ¸¶Âù°¡Áö·Î VLFÀÇ ÀϺθ¦ »ç¿ë ÁßÀÎ °æ¿ì ÇØ´ç VLF¿¡¼ »ç¿ë ÁßÀÎ °ø°£Àº ÁÙÀÏ ¼ö ¾ø½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº SQL Server Books OnlineÀÇ "Virtual Log Files" ¹× "Transaction Log Physical Architecture" Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ.
- Æ®·£Àè¼Ç ·Î±×´Â "·¦¾î¶ó¿îµå" ·Î±×ÀÔ´Ï´Ù. À̴ ƯÁ¤ ½Ã°£¿¡ ·Î±× ½ÃÀÛ ºÎºÐ ¹×/¶Ç´Â ³¡ ºÎºÐ¿¡ "¿©À¯" ¶Ç´Â "Àç»ç¿ë °¡´É" °ø°£ÀÌ ÀÖ´Â VLF°¡ ÀÖÀ» ¼ö ÀÖÀ½À» ÀǹÌÇÕ´Ï´Ù. ·Î±×¸¦ ÁÙÀÌ·Á¸é ÇØ´ç ·Î±×ÀÇ ¿©·¯ °÷¿¡ ¿©À¯ °ø°£ÀÌ ÀÖ¾î¾ß ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÇØ´ç ·Î±×ÀÇ ³¡ ºÎºÐ¿¡ "¿©À¯" °ø°£ÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ, Àüü VLF¸¦ ÁÙÀÏ ¼ö¸¸ ÀÖ½À´Ï´Ù. Æ®·£Àè¼Ç ·Î±×¸¦ ÁÙÀÌ·Á¸é ·Î±× ÆÄÀÏÀÇ ³¡¿¡ ÀÖ´Â VLF°¡ ºñȰ¼ºÈµÇ¾î Àß·Á¾ß ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº SQL Server Books OnlineÀÇ "Truncating the Transaction Log" Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½ ¸î °¡Áö »çÇ׿¡ À¯ÀÇÇϽʽÿÀ.
- ½Ã½ºÅÛ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â º¯°æ ÀÛ¾÷À» ¼öÇàÇϱâ ÀüÀ̳ª ÈÄ¿¡ Ç×»ó ½Ã½ºÅÛ µ¥ÀÌÅͺ£À̽º ¹× »ç¿ëÀÚ µ¥ÀÌÅͺ£À̽º ¹é¾÷À» ¼öÇàÇϽʽÿÀ. DBCC SHRINKFILE ¹× DBCC SHRINKDATABASE´Â ·Î±ëµÇ´Â ÀÛ¾÷ÀÌ ¾Æ´Ï¸ç, À̵éÀ» ½ÇÇàÇϸé ÇâÈÄ Æ®·£Àè¼Ç ·Î±× ¹é¾÷µµ ¹«È¿ÈµË´Ï´Ù. DBCC SHRINKFILE ¸í·ÉÀ̳ª DBCC SHRINKDATABASE ¸í·É Áß Çϳª¸¦ ½ÇÇàÇÑ ÈÄ¿¡´Â ¹Ýµå½Ã Àüü µ¥ÀÌÅͺ£À̽º ¹é¾÷À» ¼öÇàÇØ¾ß ÇÕ´Ï´Ù.
- Ãà¼Ò°¡ ÁøÇàµÉ ½Ã°£¿¡ ¿¹¾àµÈ ¹é¾÷ÀÌ ¾ø´ÂÁö È®ÀÎÇϽʽÿÀ.
- ¿À·¡µÇ°Å³ª, Àå±â°£ ½ÇÇàÇϰųª ¶Ç´Â º¹Á¦µÇÁö ¾ÊÀº Æ®·£Àè¼ÇÀÌ ¾ø´ÂÁö È®ÀÎÇϽʽÿÀ. ÀÌ·¸°Ô È®ÀÎÇÏ·Á¸é ´ÙÀ½°ú À¯»çÇÑ Äڵ带 »ç¿ëÇϽʽÿÀ.
DBCC OPENTRAN (database_name)
- DBCC SHRINKFILE ¸í·ÉÀ̳ª DBCC SHRINKDATABASE ¸í·ÉÀ» ½ÇÇàÇÏ¿© Ãà¼Ò ÁöÁ¡À» Ç¥½ÃÇϽʽÿÀ. DBCC SHRINKFILE ¹× DBCC SHRINKDATABASE »ç¿ë ±ÇÇÑÀº sysadmin °íÁ¤ ¼¹ö ¿ªÇÒÀ̳ª db_owner °íÁ¤ µ¥ÀÌÅͺ£À̽º ¿ªÇÒÀÇ ¸â¹ö¿¡ ±âº»ÀûÀ¸·Î Á¦°øµÇ¸ç, ±ÇÇÑ Àü°¡´Â ºÒ°¡´ÉÇÕ´Ï´Ù. ÀÌµé ¸í·ÉÀÇ Â÷ÀÌÁ¡¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº SQL Books OnlineÀÇ ´ÙÀ½ Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ. ¸Å°³ º¯¼ö°¡ ´Ù¸§¿¡ À¯ÀÇÇϽʽÿÀ.
DBCC SHRINKFILE (file_name, target_size)
DBCC SHRINKDATABASE (database_name, target_percent)
- ´õ¹Ì(dummy) Æ®·£Àè¼ÇÀ» ¸î °³ ¸¸µé¾î ·Î±×¸¦ °ãÄ¡°Ô ¸¸µç ÈÄ BACKUP ¸í·ÉÀ» ½ÇÇàÇÏ¿© ·Î±×¸¦ ÀÚ¸£½Ê½Ã¿À. BACKUP ¹®Àº ½ÇÁ¦·Î Ç¥½ÃµÈ ¸ñÇ¥ Å©±â·Î ·Î±×¸¦ ÁÙÀ̰íÀÚ ½ÃµµÇÕ´Ï´Ù.
´ÙÀ½Àº ÁÙÀÏ ¼ö ÀÖµµ·Ï ´ÜÀÏ ³í¸® ·Î±× ÆÄÀÏ¿¡ ´ëÇØ ·Î±×¸¦ °ãÄ¡°í ·Î±×°¡ À߸®°Ô ÇÏ´Â ´õ¹Ì Æ®·£Àè¼ÇÀ» ¸¸µå´Â ¹æ¹ýÀÇ »ùÇÃÀÔ´Ï´Ù. ÇÊ¿äÇÏ¸é »ç¿ëÀÚ È¯°æ¿¡ ¸Â°Ô »ùÇÃÀ» ¼öÁ¤ÇϽʽÿÀ.
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
-- *** MAKE SURE TO CHANGE THE NEXT 3 LINES WITH YOUR CRITERIA. ***
USE Your_Database_Name -- This is the name of the database
for which the log will be shrunk.
SELECT @LogicalFileName = 'Your_log', -- Use sp_helpfile to identify the logical file name that you want to shrink.
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 100 -- in MB
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size -- in 8K pages
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)
-- Wrap log and truncate it.
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
-- Try an initial shrink.
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) -- the log has not shrunk
AND (@OriginalSize * 8 /1024) > @NewSize -- The value passed in for new size is smaller than the current size.
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log') -- Because it is a char field it inserts 8000 bytes.
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END -- update
EXEC (@TruncLog) -- See if a trunc of the log shrinks it.
END -- outer loop
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
PRINT '*** Perform a full database backup ***'
SET NOCOUNT OFF ·Î±×°¡ ¿ø·¡ Å©±â¿¡¼ ÁÙ¿©Á³´ÂÁö È®ÀÎÇϽʽÿÀ.ÇÊ¿äÇÑ °æ¿ì ¾ÕÀÇ ´Ü°è¸¦ ¹Ýº¹ÇϽʽÿÀ. ·Î±×°¡ ÁÙ¿©ÁöÁö ¾ÊÀ» °æ¿ì º» ¹®¼ÀÇ ½ÃÀÛ ºÎºÐ¿¡ ³ª¿Í ÀÖ´Â ¿ä¾à Á¤º¸¸¦ Á¡°ËÇÏ¿© ·Î±×¸¦ ÁÙÀÌ´Â µ¥ ¹®Á¦°¡ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
·Î±×¸¦ ÁÙ¿´À¸¸é ´ÙÀ½À» ¼öÇàÇϽʽÿÀ.
- ¸¶½ºÅÍ µ¥ÀÌÅͺ£À̽º¸¦ Àüü µ¥ÀÌÅͺ£À̽º ¹é¾÷ÇÕ´Ï´Ù.
- »ç¿ëÀÚ µ¥ÀÌÅͺ£À̽º¸¦ Àüü µ¥ÀÌÅͺ£À̽º ¹é¾÷ÇÕ´Ï´Ù. SHRINK ¸í·ÉÀÌ ·Î±ëµÇÁö ¾Ê°í, Àüü µ¥ÀÌÅͺ£À̽º ¹é¾÷À» ¿Ï·áÇÏÁö ¾ÊÀ¸¸é ÇâÈÄ Æ®·£Àè¼Ç ·Î±× ¹é¾÷ÀÌ ¹«È¿ÈµÇ±â ¶§¹®¿¡ ÀÌ·¯ÇÑ ÀÛ¾÷ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
·Î±×°¡ Ä¿Áö´Â ÀÌÀ¯¸¦ È®ÀÎÇÏ·Á¸é ¿¸° Æ®·£Àè¼Ç, Àå±â°£ ½ÇÇàµÇ´Â Æ®·£Àè¼Ç, º¹Á¦µÇÁö ¾ÊÀº Æ®·£Àè¼Ç ¶Ç´Â ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ »ç¿ëÇÏ´Â Æ®·£Àè¼ÇÀ» Á¡°ËÇÏ¸é µË´Ï´Ù.
ÂüÁ¶
ÀÚ¼¼ÇÑ ³»¿ëÀº Microsoft ±â¼ú ÀÚ·áÀÇ ´ÙÀ½ ¹®¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
110139?
(http://support.microsoft.com/kb/110139/KO/
)
INF: SQL Æ®·£Àè¼Ç ·Î±×°¡ °¡µæ Â÷´Â ¿øÀÎ
62866?
(http://support.microsoft.com/kb/62866/EN-US/
)
INFO: Reasons Why SQL Transaction Log Is Not Being Truncated
66057?
(http://support.microsoft.com/kb/66057/EN-US/
)
PRB: Running Out of Log Space When Running Large Bulk Loads
80629?
(http://support.microsoft.com/kb/80629/EN-US/
)
PRB: Transaction Log Partially Truncated
SQL Server Books Online; topics: "Transaction Log Physical Architecture"; "Optimizing Transaction Log Performance"