51Testing软件测试网0U ^-wl.[ C 如果从来没有从事务日志中删除日志记录,逻辑日志就会一直增长,直到填满容纳物理日志文件的磁盘上的所有可用空间。在某个即时点,必须删除恢复或还原数据库时不再需要的旧日志记录,以便为新日志记录腾出空间。
9`7g8X
vO3@5v(E0可通过以下语句解决:51Testing软件测试网F"Wu!z[
BACKUP LOG tablename WITH NO_LOG
8E8jV:Wt{6A0 DBCC SHRINKFILE(Filename|FileID)51Testing软件测试网3z9minC$q)}
&f7kZ'XQ-H7h0一、截断事务日志:BACKUP LOG tablename WITH NO_LOG
,a%IW_!\R01v/P _Xw L;n K uR(r0 删除日志记录以减小逻辑日志的大小的过程称为截断日志。51Testing软件测试网2x dA`z0X/V0M
fk0t"dZ5i0 1、永远不能截断事务日志的活动部分。
a`s)y3j^)ky#^8N0 日志的活动部分是在任何时间恢复数据库所需的日志部分,因此必须有回滚所有未完成的事务所需的日志映像。51Testing软件测试网0z p!W1uBH*C |r
这部分必须始终在数据库中,因为一旦服务器发生故障,在服务器重新启动时必须用它恢复数据库。51Testing软件测试网8C}0@1W6x-f8??8S![U
51Testing软件测试网.?;Jqlsv2E 2、日志活动部分起点处的记录由最小恢复日志序号 (MinLSN) 标识。51Testing软件测试网n7{&DC2]'kY+Lu1P
当截断事务日志时,删除包含 MinLSN 的虚拟日志文件头之前的所有日志记录。51Testing软件测试网/D/Z+Qd@5j3k0G,x|
51Testing软件测试网 M;f dp P{\ 3、截断不减小物理日志文件的大小,但减小逻辑日志文件的大小。
A_6ckrw+l051Testing软件测试网g"{2[&L4^w0k 4、MinLSN的确定:51Testing软件测试网1EyrG1y(N/T
这是有两个活动事务的事务日志末端的简化版本。检查点记录已压缩成单个记录。51Testing软件测试网
R;JFwE+W9[4T,G
wPiB4r*k q0
!d3|-{6o!L0 LSN 148 是事务日志内的最后一条记录。在执行处理 LSN 147 时所记录的检查点时,Tran 1
VG
^
Z.m3H0 已经提交而且 Tran 2 是唯一的活动事务。这就使 Tran 2 的第一条日志记录成为最后一个检51Testing软件测试网,zRV;~1vP)C"p
查点上的活动事务的最旧日志记录。这使 LSN 142(Tran 2 的开始事务记录)成为 MinLSN。
cc)W
R};n`9?R8AP6h3s051Testing软件测试网:Vv6y@e&``E7^二、收缩事务日志:DBCC SHRINKFILE(Filename|FileID)
'R/lP7y!~A02w
k u1w&Q0 1、日志收缩操作依赖于最初的日志截断操作。
w0_
F-Z0Bs1|"[0]0 2、日志截断操作不减小物理日志文件的大小,但减小逻辑日志的大小,并将没有容纳逻辑日志任何部
kINsA8}'X0 3、分的虚拟日志标记为不活动。51Testing软件测试网-B&k hXQc
日志收缩操作会删除足够多的不活动虚拟日志,将日志文件减小到要求的大小。
/r_%rJf T0)A;a
[,c!?0DBCC SHRINKFILE
jC"Hc-lwc0收缩相关数据库的指定数据文件或日志文件大小。51Testing软件测试网wb,c w8X O)_*nf
U;vtkRR0语法51Testing软件测试网W:T7L"_5O#y
DBCC SHRINKFILE51Testing软件测试网2]:@/m0]o{!t
( { file_name | file_id }
'Zvv8s0KbQ I_4b0 { [ , target_size ]
wq2n%aB%G0 | [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ]
YQ7[H5M(Sce0 }
!lu1Zz b8q0 )
t(Gox3`)aC02zGTc7|c4p0参数
^&VD:x+W-T0file_name
W:@z{8A1la-oE@0是已收缩文件的逻辑名称。若要获得文件name,可通过在当前数据库中搜索sysfiles得到name。51Testing软件测试网-nVN
N/x7r
51Testing软件测试网TZ9j)E;]r bfile_id51Testing软件测试网w"V;a/w{"y
是要收缩的文件的标识 (ID) 号。若要获得文件ID,请使用 FILE_ID 函数或在当前数据库
6Ob]S'L uu0fUz,B0中搜索 sysfiles。
!a!Hex
_P0QV6yc y wT@0target_size51Testing软件测试网WXc
^`IW*C
是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,DBCC SHRINKFILE
Ny.`%eXV2S0将文件大小减少到默认文件大小。51Testing软件测试网'T3Pjo'o2YO
DBCC SHRINKFILE 不会将文件收缩到小于存储文件中的数据所需要的大小。
/rA q*]k3mC0/W#c
Z6x5ckIJ0EMPTYFILE
\S I{5X0将所有数据从指定文件中迁移到同一文件组中的其它文件。该选项允许使用 ALTER DATABASE51Testing软件测试网
rB\1|GMzN
语句除去文件。
Y0E6}Z-W#p.?,A051Testing软件测试网df3[iQ|M0F4C^NOTRUNCATE
FY7M0^+RJ#x0导致将释放的文件空间保留在文件中。
)k1Z,x`6{k q0当与 target_size 一起指定 NOTRUNCATE 时,释放的空间不会释放给操作系统。51Testing软件测试网)P u+o
u2Ie
DBCC SHRINKFILE 的唯一影响是将已使用的页从 target_size 行上面重新定位到文件的前面。
vxN)?~)F0当未指定 NOTRUNCATE 时,所有释放的文件空间返回给操作系统。51Testing软件测试网vc,y%m7e,}m
a
51Testing软件测试网E(P)`-v`9t(j'dj:Iv8gTRUNCATEONLY
#ow"\%Rv1W4K0导致文件中的任何未使用的空间释放给操作系统,并将文件收缩到上一次分配的大小,
8V&E^A#D0从而减少文件大小,而不移动任何数据。51Testing软件测试网1f(UO|"RdHC
不尝试将行重新定位到未分配页。如果使用 TRUNCATEONLY,将忽略 target_size。
|?X oW7t s;R5_0