SQL Server 數據庫清除日志的方法_Mssql數據庫教程

      編輯Tag賺U幣
      教程Tag:ServerSQL添加

      推薦:關于sqlserver 2005 使用臨時表的問題( Invalid object name #temptb)
      最近在利用 SSRS 2005 做報表的時候,調用帶有臨時表的數據源時,系統會報錯,并無法進入向導的下一步,提示There is an error in the query. Invalid object name #temptb

      方法一:
      1、打開查詢分析器,輸入命令
      BACKUP LOG database_name WITH NO_LOG
      2、再打開企業管理器--右鍵要壓縮的數據庫--所有任務--收縮數據庫--收縮文件--選擇日志文件--在收縮方式里選擇收縮至xxm,這里會給出一個允許收縮到的最小m數,直接輸入這個數,確定就可以了。

      方法二:
      設置檢查點,自動截斷日志

        一般情況下,SQL數據庫的收縮并不能很大程度上減小數據庫大小,其主要作用是收縮日志大小,應當定期進行此操作以免數據庫日志過大
      1、設置數據庫模式為簡單模式:打開SQL企業管理器,在控制臺根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的服務器-->雙擊打開數據庫目錄-->選擇你的數據庫名稱(如用戶數據庫cwbase1)-->然后點擊右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇“簡單”,然后按確定保存
      2、在當前數據庫上點右鍵,看所有任務中的收縮數據庫,一般里面的默認設置不用調整,直接點確定
      3、收縮數據庫完成后,建議將您的數據庫屬性重新設置為標準模式,操作方法同第一點,因為日志在一些異常情況下往往是恢復數據庫的重要依據

      方法三:通過SQL收縮日志

      代碼復制到查詢分析器里,然后修改其中的3個參數(數據庫名,日志文件名,和目標日志文件的大小),運行即可

      SET NOCOUNT ON
      DECLARE @LogicalFileName sysname,
      @MaxMinutes INT,
      @NewSize INT

      USE tablename -- 要操作的數據庫名
      SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
      @MaxMinutes = 10, -- Limit on time allowed to wrap log.
      @NewSize = 1 -- 你想設定的日志文件的大小(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

      方法四:刪除日志文件。

      此方法有一定的風險性,因為sql server的日志文件不是即時寫入數據庫主文件的,如處理不當,會造成數據的損失。1、操作前請斷開所有數據庫連接。
      2、分離數據庫
      分離數據庫:企業管理器->服務器->數據庫->cwbase1->右鍵->分離數據庫
      分離后,cwbase1數據庫被刪除,但保留了數據文件和日志文件
      3、刪除log物理文件
      刪除LOG物理文件,然后附加數據庫: 企業管理器->服務器->數據庫->右鍵->附加數據庫
      此法生成新的log,大小只有500多k。

      注意:建議使用第一種方法。操作前請確保所有操作員都已經推出系統,斷開數據庫的連接。

      以上操作前,請務必做好數據備份!

      1.sql server 2005 清除日志語句

      dump transaction 數據庫名稱 with no_log
      backup log 數據庫名稱 with no_log
      dbcc shrinkdatabase(數據庫名稱)


      2.sql server 2008 清除日志語句

      sp_dboption 數據庫名稱, "trunc. log on chkpt.", true
      checkpoint
      sp_dboption 數據庫名稱, "autoshrink", true

      清除SQLSERVER數據庫日志文件的方法:

      1、先將這個數據庫卸載:
      EXEC sp_detach_db 'database_name', 'true'
      然后將該數據庫所對應的Log文件刪掉;
      最后,再將這個數據庫注冊到系統里面:

      EXEC sp_attach_db @dbname = N'database_name',
      @filename1 = N'e:\mssql7\data\database_name_data.mdf'

      2、數據庫上點右鍵-所有任務-收縮數據庫-選擇收縮文件為LOG 。

      3、清除SQLSERVER數據庫日志的方法:

      *******下面是轉發的郵件*****

      The shrinking of log files is not immediate in SQL Server 7.0. The
      shrinking of log files does not occur until the active portion of the
      log moves. As updates are performed on the database, the shrink
      operation occurs at checkpoints or transaction log backups. Each log
      file is marked with the target_percent for the shrink operation. Each
      subsequent log backup or log truncation attempts to shrink the file to
      bring its size as close to the target_percent as possible. Because a log
      file can be shrunk only to a virtual log file boundary, it may not be
      possible to shrink a log file to a size smaller than the size of a
      virtual log file even if it is not being used. Please refer to SQL Book
      Online for the details.

      RESOLUTION

      Below script will help to shrink the log file immediately, pls keep it
      running for 3~4 minutes and then stop it manually.

      \* Run "select fileid, name,filename from ..sysfiles" to get
      the fileid which you want to shrink *\

      use
      go
      dbcc shrinkfile(fileid,notruncate)
      dbcc shrinkfile(fileid,truncateonly)
      create table t1 (char1 char(4000))
      go
      declare @i int
      select @i = 0
      while (1 = 1)
      begin
      while (@i < 100)
      begin
      insert into t1 values ('a') select @i = @i +1
      end
      truncate table t1
      backup log with truncate_only
      end
      go

      *****轉發內容結束*****

      SQLServer數據庫日志清理 清除sqlserver2005日志

      有時候當系統運行時間比較長的時候,我們把備份的數據庫還原的時候發現,數據庫中數據文件和日志文件變的好大,特別是日志文件。現在給大家介紹如何清理SQLServer數據庫日志;有兩種方法如下:

      方法一:手動清除sqlserver2005日志

      1.右鍵在清除日志的數據庫,如“TestDB”,點擊[新建查詢(Q)]
      2.輸入以下SQL語句,其中“TestDB”是數據庫名稱
      DUMP TRANSACTION TestDB WITH NO_LOG
      3.執行該SQL,成功后繼續以下操作
      4.右鍵該數據庫節點,點擊[任務(T)] -> [收縮(S)] -> [文件(F)]
      5.在彈出的“收縮文件”對話框中,將“文件類型(T)”選為“日志”,將“收縮操作”選中“在釋放未使用的空間前重新組織頁(O)”
      6.在“將文件收縮到(K)”文本框中輸入后面提示的最小大小的數值,點擊[確定]即可。

      方法二:用工具軟件SqlServer日志清除專家3.0,可對Sql Server 6.5到Sql Server 2005的各種版本的數據庫日志的清除;其使用方法非常簡單;SqlServer 日志清除專家綠色版 V3.5下載地址:

      下載地址

      方法一操作起來相對麻煩一些,可是可以定制日志的大小,清理日志后其相應的數據庫數據文件在也會變小,數據也不會丟失;方法二操作比較方便,可以把數據庫中的日志文件清理到1M大;

      分享:SQL Server 2005安裝實例環境圖解
      對于大多數的數據庫管理員和開發人員來說,安裝并配置一個新的SQL Server是激動人心的任務,因為它可以帶來全新的挑戰和機會

      來源:模板無憂//所屬分類:Mssql數據庫教程/更新時間:2013-04-21
      相關Mssql數據庫教程