在full模式下,如果不定时
备份并截断
log文件,会导致log文件过大,从而把磁盘撑爆,可以依照以下步骤
shrink log文件:
1. 用sqlperf查看log大小及使用率:dbcc sqlperf(logspace)
Database Name Log Size (MB) Log Space Used (%) Statusmaster 2.492188 52.82132 0
tempdb 599.9922 38.16196 0
model 0.4921875 78.57143 0
msdb 0.9921875 47.24409 0
SECURITY 9.992188 12.62705 0
BGI 38250.74 0.1485674 0BGIDB 24.875 25.75769 0
CFUND 6.117188 26.92369 0
DCI 5.554688 28.2173 0
EVPM 7.429688 26.43927 0
上面用红色标注的数据库BGI就是我们需要Shrink的目标,因为它的log很大,而使用率却很低。
2. 用dbcc shrinkfile 试图收缩log文件:
首先用sp_helpdb找出目标
数据库的逻辑文件名:
sp_helpdb bgi
name fileid filename filegroup size maxsize growth usageBGI_Data 1 I:\INTEL_DATA\BGI_Data1.MDF PRIMARY 50176000 KB Unlimited 512000 KB
data only
BGI_Log 2 J:\INTEL_LOG\BGI_LOG1.LDF NULL 39168768 KB Unlimited 512000 KB log only
BGI_Index1_Data 3 N:\INTEL_DATA\BGI_NDEX1.NDF BGI_INDEX1 30190656 KB Unlimited 512000 KB data only
上面用红色标注的就是所需的逻辑log文件名。
然后用dbcc shrinkfile收缩log文件:
dbcc shrinkfile ('BGI_Log', 100) --把BGI数据库的log文件缩小为100M。
执行结束之后,再用 dbcc sqlperf(logspace) 查看一下是否已经收缩成功:
Database Name Log Size (MB) Log Space Used (%) Statusmaster 2.492188 52.82132 0
tempdb 599.9922 38.16196 0
model 0.4921875 78.57143 0
msdb 0.9921875 47.24409 0
SECURITY 9.992188 12.62705 0
BGI 38250.74 0.1485674 0BGIDB 24.875 25.75769 0
CFUND 6.117188 26.92369 0
DCI 5.554688 28.2173 0
EVPM 7.429688 26.43927 0
发现BGI的log并没有变小,此时需要先备份log。
3. 备份log:Backup log BGI to disk='H:\INTEL_TRAN_DUMPS\INDIVT01\BGI\bgi_log.bak'
4. 再用dbcc shrinkfile 试图收缩log文件:
dbcc shrinkfile ('BGI_Log', 100)
再用dbcc sqlperf(logspace)查看,发现已经收缩成功了:
Database Name Log Size (MB) Log Space Used (%) Statusmaster 2.492188 52.82132 0
tempdb 599.9922 38.16196 0
model 0.4921875 78.57143 0
msdb 0.9921875 47.24409 0
SECURITY 9.992188 12.62705 0
BGI 125.8672 99.60896 0BGIDB 24.875 25.75769 0
CFUND 6.117188 26.92369 0
DCI 5.554688 28.2173 0
EVPM 7.429688 26.43927 0
注意: 对于
SQL Server 2000,步骤3-4可能需要反复执行多遍。