백업로그가 확장되거나 로그가 꽉찰때 로그를 비워줄때 사용하는 옵션이 SQL2008이후 버젼에서는 더이상 사용할 수 없게 되었다.


use master
go

drop database shrinkdemo
go

CREATE DATABASE shrinkdemo 
ALTER DATABASE shrinkdemo SET RECOVERY FULL
go
 
sp_helpdb shrinkdemo
go

--name	fileid	filename	filegroup	size
--shrinkdemo	1	D:\DB\MSSQL\shrinkdemo.mdf	PRIMARY	4160 KB
--shrinkdemo_log	2	D:\DB\MSSQL\shrinkdemo_log.ldf	NULL	1040 KB

USE shrinkdemo
go
 
--※. log file 생성시 생성 크기에 따른 vlf count수

--Initial or Extended Size	Number of VLFs created
--<64MB	4
-->=64MB and < 1GB	8
-->=1GB	16

-- 1MB 이내임으로 VLF COUNT 체크
DBCC LOGINFO

--RecoveryUnitId	FileId	FileSize	StartOffset	FSeqNo	Status	Parity	CreateLSN
--0	2	262144	8192	34	2	64	0
--0	2	262144	270336	0	0	0	0
--0	2	262144	532480	0	0	0	0
--0	2	270336	794624	0	0	0	0
-- 4개이다.



CREATE TABLE biggie (a int, padding char(4000) default ' ')
go
 
INSERT biggie (a)
   SELECT a.object_id
   FROM   sys.objects a
   CROSS  JOIN sys.objects b
   CROSS  JOIN sys.objects c
go
 
EXEC sp_helpdb shrinkdemo
go
 
 --log file size 증가.
--name  size
--shrinkdemo    667904 KB
--shrinkdemo_log    770752 KB
 
 
-- 1MB 이내임으로 VLF COUNT 체크
DBCC LOGINFO
-- 총 32개 VLF 청크가 생겼다.
 
-- 복구 모델을 변경
ALTER DATABASE shrinkdemo SET RECOVERY SIMPLE
go
 
-- 로그를 잘라낸다.
DBCC SHRINKFILE(shrinkdemo_log)
go

--DbId	FileId	CurrentSize	MinimumSize	UsedPages	EstimatedPages
--23	2	130	130	128	128

-- 4개
DBCC LOGINFO
-- 다시 4개 생성
--RecoveryUnitId	FileId	FileSize	StartOffset	FSeqNo	Status	Parity	CreateLSN
--0	2	262144	8192	337	2	128	0
--0	2	262144	270336	35	0	64	0
--0	2	262144	532480	36	0	64	0
--0	2	270336	794624	37	0	64	0
 
EXEC sp_helpdb shrinkdemo
go

-- 축소되었다.(파일이 다시 1M로 되어 있으니 CHUNK가 4개로 생성)
--name  size
--shrinkdemo    667904 KB
--shrinkdemo_log    576 KB
 


-- 로그 파일을 적정 사이즈로 변경
ALTER DATABASE shrinkdemo 
MODIFY FILE
(
      NAME = shrinkdemo_log 
    , SIZE = 200MB
)
go

-- 복구 모델을 변경
ALTER DATABASE shrinkdemo SET RECOVERY FULL
go

-- 8개가 정상인데 왜? 12개야?
DBCC LOGINFO
go

-- 파일의 SIZE가 200MB인데 왜 12개의 VLF가 생성되는 건가? 
-- 최소로 축소 했을 때 4개였는데 흠....

--RecoveryUnitId	FileId	FileSize	StartOffset	FSeqNo	Status	Parity	CreateLSN
--0	2	262144	8192	337	2	128	0
--0	2	262144	270336	35	0	64	0
--0	2	262144	532480	36	0	64	0
--0	2	270336	794624	37	0	64	0
--0	2	26017792	1064960	0	0	0	337000000006400001
--0	2	26017792	27082752	0	0	0	337000000006400001
--0	2	26017792	53100544	0	0	0	337000000006400001
--0	2	26017792	79118336	0	0	0	337000000006400001
--0	2	26017792	105136128	0	0	0	337000000006400001
--0	2	26017792	131153920	0	0	0	337000000006400001
--0	2	26017792	157171712	0	0	0	337000000006400001
--0	2	26525696	183189504	0	0	0	337000000006400001