<var id="b3rx3"></var>

        <del id="b3rx3"><video id="b3rx3"></video></del>

            <big id="b3rx3"><strike id="b3rx3"></strike></big>

                <address id="b3rx3"></address>

                思為網絡

                + 網站建設營銷咨詢:028-8608 0655
                + QQ咨詢:361300450 19777182

                windows獨享主機MSSQL數據庫日志文件過大的解決方法

                來源:  時間:2011-11-28  點擊:

                    很多獨立服務器客戶反饋數據庫日志文件過大,嚴重浪費磁盤資源,數據庫實際大小為600M, 日志文件實際大小為33M, 但MSSQL日志文件占用空間為2.8G!!!

                    我們及時反饋給我們的研發部門,他們寫了一個腳本,就可以將日志文件縮小到自己想要的大小了。把代碼COPY到查詢分析器里,,然后修改其中的3個參數(紅色字體部分),運行即可(測試通過,請獨立服務器客戶測試)
                -----
                SET NOCOUNT ON

                DECLARE @LogicalFileName sysname,

                @MaxMinutes INT,

                @NewSize INT

                USE   data_db            -- 要操作的數據庫名

                SELECT  @LogicalFileName = 'data_db_log',  -- 日志文件名

                @MaxMinutes = 10,               -- Limit on time allowed to wrap log.

                @NewSize = 100                  -- 你想設定的日志文件的大小(M)

                -- Setup / initialize

                DECLARE @OriginalSize int

                SELECT @OriginalSize = size

                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)

                 

                DECLARE @Counter   INT,

                @StartTime DATETIME,

                @TruncLog  VARCHAR(255)

                SELECT  @StartTime = GETDATE(),

                @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'

                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) 

                AND (@OriginalSize * 8 /1024) > @NewSize 

                BEGIN -- Outer loop.

                SELECT @Counter = 0

                WHILE  ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))

                BEGIN -- update

                INSERT DummyTrans valueS ('Fill Log') 

                DELETE DummyTrans

                SELECT @Counter = @Counter + 1

                END  

                EXEC (@TruncLog) 

                END  

                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

                SET NOCOUNT OFF

                以上代碼用T-SQL語言實現。

                .
                Tags:   mssql 服務器   
                Web URL:http://www.sw996.com/faq/zhuji/mssql-log-compress.html   收藏此文  打印此文
              1. 上一篇:FlashFXP更新網站圖文配置詳解-FTP網站建設管理
              2. 下一篇:mysql日志文件詳細介紹
              3. 相關文章列表

              4. 獨立服務器選擇指南:VPS ECS 云服務器怎么選擇
              5. 最新中文字幕av专区_亚洲激情_扒开老师的粉嫩泬10p_xxxx欧美丰满大屁股