ITPub博客

首页 > Linux操作系统 > Linux操作系统 > How to shrink log files in MS SQL Server

How to shrink log files in MS SQL Server

原创 Linux操作系统 作者:mzc_uk 时间:2011-10-03 15:57:31 0 删除 编辑
在full模式下,如果不定时备份并截断log文件,会导致log文件过大,从而把磁盘撑爆,可以依照以下步骤shrink log文件:

1. 用sqlperf查看log大小及使用率:

dbcc sqlperf(logspace)

Database Name    Log Size (MB)    Log Space Used (%)    Status
master                    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    0
BGIDB                   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    usage
BGI_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 (%)    Status
master                    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    0
BGIDB                   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 (%)    Status
master                    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    0
BGIDB                   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可能需要反复执行多遍。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20500445/viewspace-708593/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-10-03

  • 博文量
    14
  • 访问量
    10151