sql2005 日志清理 SQL2005壓縮清除日志的方法_Mssql數(shù)據(jù)庫(kù)教程

      編輯Tag賺U幣
      教程Tag:日志清理添加

      推薦:SQL2005利用ROW_NUMBER() OVER實(shí)現(xiàn)分頁(yè)功能
      SQL2005利用ROW_NUMBER() OVER實(shí)現(xiàn)分頁(yè)功能,需要的朋友可以參考下

      教你如何清除SQL日志
      1.打開(kāi)查詢分析器,輸入命令DUMP TRANSACTION 數(shù)據(jù)庫(kù)名 WITH NO_LOG2.
      再打開(kāi)企業(yè)管理器--右鍵你要壓縮的數(shù)據(jù)庫(kù)--所有任務(wù)--收縮數(shù)據(jù)庫(kù)--收縮文件--選擇日志文件--在 收縮方式里選擇收縮至XXM,
      這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了。

      清除Log有兩種方法:  
      1.自動(dòng)清除法
      開(kāi)放數(shù)據(jù)庫(kù)選項(xiàng) Trunc Log on Chkpt,使數(shù)據(jù)庫(kù)系統(tǒng)每隔一段時(shí)間自動(dòng)清除Log。
      此方法的優(yōu)點(diǎn)是無(wú)須人工干預(yù), 由SQL Server自動(dòng)執(zhí)行,并且一般不會(huì)出現(xiàn)Log溢滿的情況;缺點(diǎn)是只清除Log而不做備份。  
      2.手動(dòng)清除法
      執(zhí)行命令“dump transaction”來(lái)清除Log。
      以下兩條命令都可以清除日志:dump transaction with truncate_onlydump transaction with no_log   通常刪除事務(wù)日志中不活躍的部分可使用“dump transaction withtrancate_only”命令,這條命令寫(xiě)進(jìn)事務(wù)日志時(shí),還要做必要的并發(fā)性檢查。
      SYBASE提供 “dump transaction withno_log”來(lái)處理某些非常緊迫的情況,使用這條命令有很大的危險(xiǎn)性,SQL Server會(huì)彈出一條警告信息。
      為了盡量確保數(shù)據(jù)庫(kù)的 一致性,你應(yīng)將它作為“最后一招”。  
      以上兩種方法只??清除日志,而不做日志備份,若想備份日志,應(yīng)執(zhí)行“dump transaction database_name to dumpdevice”命令。
      PS:附一個(gè)更好的方法先分離數(shù)據(jù)庫(kù)后,直接刪除日志以后,再在查詢分析器 里用exec sp_attach_single_file_db '數(shù)據(jù)庫(kù)名', '.mdf文件路徑' 命令附加數(shù)據(jù)庫(kù)。
      OVER.在別的 地方看到的 不錯(cuò)。

      數(shù)據(jù)庫(kù)日志操作先提供一種復(fù)雜的方法壓縮日志及數(shù)據(jù)庫(kù)文件如下:
      1.清空日志DUMP TRANSACTION 庫(kù)名 WITH NO_LOG
      2.截?cái)嗍聞?wù)日志:BACKUP LOG 數(shù)據(jù)庫(kù)名 WITH NO_LOG
      3.收縮數(shù)據(jù)庫(kù)文件(如果不壓縮,數(shù) 據(jù)庫(kù)的文件不會(huì)減小企業(yè)管理器--右鍵你要壓縮的數(shù)據(jù)庫(kù)--所有任務(wù)--收縮數(shù)據(jù)庫(kù)--收縮文件
      --選擇日志文件--在收縮方式里選擇 收縮至XXM,這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了
      --選擇數(shù)據(jù)文件--在收縮方式里選擇收縮至XXM,這 里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了 

      也可以用SQL語(yǔ)句來(lái)完成
      --收縮數(shù)據(jù)庫(kù)DBCC SHRINKDATABASE(客戶資料)
      --收縮指定數(shù)據(jù)文件,1是文件號(hào),可以通過(guò)這個(gè)語(yǔ)句查詢到:select * from sysfilesDBCC SHRINKFILE(1)
      4.為了最大化的縮小日志文件(如果是sql 7.0,這步只能在查詢分析器中進(jìn)行)a.分離數(shù)據(jù)庫(kù): 企業(yè)管理器--服務(wù)器--數(shù)據(jù)庫(kù)--右鍵--分離數(shù)據(jù)庫(kù)b.在我的電腦中刪除LOG文件c.附加數(shù)據(jù)庫(kù): 企業(yè)管理器--服務(wù)器--數(shù)據(jù)庫(kù)--右鍵--附加數(shù)據(jù)庫(kù)此法將生成新的LOG,大小只有500多K或用代碼:下面的示例分離 pubs,然后將 pubs 中的一個(gè)文件附加到當(dāng)前服務(wù)器。a.分離E X E C sp_detach_db @dbname = 'pubs'b.刪除日志文件c.再附加E X E C sp_attach_single_file_db @dbname = 'pubs',@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'5.為了以后能自動(dòng)收縮,做如下設(shè)置:企業(yè)管理器--服務(wù)器--右鍵數(shù)據(jù)庫(kù)--屬性--選項(xiàng)--選擇"自動(dòng)收縮"--SQL語(yǔ)句設(shè)置方式:E X E C sp_dboption '數(shù)據(jù)庫(kù)名', 'autoshrink', 'TRUE'6.如果想以后不讓它日志增長(zhǎng)得太大企業(yè)管理器--服務(wù)器--右鍵數(shù)據(jù)庫(kù)--屬性--事務(wù)日志 --將文件增長(zhǎng)限制為xM(x是你允許的最大數(shù)據(jù)文件大小)--SQL語(yǔ)句的設(shè)置方式:alter database 數(shù)據(jù)庫(kù)名 modify file(name=邏輯文件名,maxsize=20)特別注意:請(qǐng)按步驟進(jìn)行,未進(jìn)行前面的步驟,請(qǐng)不要做后面的步驟否則可能損壞你的數(shù)據(jù)庫(kù).一般不建議做第4,6兩步第4步不安全,有可能損壞數(shù)據(jù)庫(kù)或丟失數(shù)據(jù)第6步如果日志達(dá)到上限,則以后的數(shù)據(jù)庫(kù)處理會(huì)失敗,在清理日志后才能恢復(fù). 另外提供一種更簡(jiǎn)單的方法,本人屢試不爽,建議大家使用。更簡(jiǎn)單的方法:1。右建數(shù)據(jù)庫(kù)屬性窗口--故障還原模型--設(shè)為簡(jiǎn)單2。右建數(shù)據(jù)庫(kù)所有任務(wù)--收縮數(shù)據(jù)庫(kù)3。右建數(shù)據(jù)庫(kù)屬性窗口--故障還原模型--設(shè)為大容量日志記錄 可能有不少朋友遇到過(guò)這樣的問(wèn)題:update或delete語(yǔ)句忘帶了where子句,或where子句精度不夠,執(zhí)行之后造成了嚴(yán)重的后果,這種情況 的數(shù)據(jù)恢復(fù)只能利用事務(wù)日志的備份來(lái)進(jìn)行,所以如果你的SQL沒(méi)有進(jìn)行相應(yīng)的全庫(kù)備份或不能備份日志(truncate log on checkpoint選項(xiàng)為1),那么就無(wú)法進(jìn)行數(shù)據(jù)的恢復(fù)了,或者只能恢復(fù)到最近一次的備份的數(shù)據(jù)了。 以下簡(jiǎn)單說(shuō)明恢復(fù)數(shù)據(jù)方法:1,如果誤操作之前存在一個(gè)全庫(kù)備份(或已有多個(gè)差異備份或增量備份),首先要做的事就是進(jìn)進(jìn)行一次日志備份(如果為了不讓日 志文件變大而置trunc. log on chkpt.選項(xiàng)為1那你就死翹了)backup log dbName to disk='fileName'2,恢復(fù)一個(gè)全庫(kù)備份,注意需要使用with norecovery,如果還有其他差異或增量備份,則逐個(gè)恢復(fù)restore database dbName from disk='fileName' with norecovery3,恢復(fù)最后一個(gè)日志備份即剛做的日志備份,指定恢復(fù)時(shí)間點(diǎn)到誤操作之前的時(shí)刻restore log dbName from disk='fileName'with stopat='date_time' 以上這些操作都可以在SQL SERVER企業(yè)管理器里完成,難度不大。。。日志文件滿而造成SQL數(shù)據(jù)庫(kù)無(wú)法寫(xiě)入文件時(shí),可用兩種方法:一種方法:清空日志。1.打開(kāi)查詢分析器,輸 入命令DUMP TRANSACTION 數(shù)據(jù)庫(kù)名 WITH NO_LOG2.再打開(kāi)企業(yè)管理器--右鍵你要壓縮的數(shù)據(jù)庫(kù)--所有任務(wù)--收縮數(shù)據(jù)庫(kù)--收縮文件--選擇日志文件--在收縮方式里選擇收縮至XXM, 這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了。 另一種方法有一定的風(fēng)險(xiǎn)性,因?yàn)镾QL SERVER的日志文件不是即時(shí)寫(xiě)入數(shù)據(jù)庫(kù)主文件的,如處理不當(dāng),會(huì)造成數(shù)據(jù)的損失。1: 刪除LOG分離數(shù)據(jù)庫(kù) 企業(yè)管理器->服務(wù)器->數(shù)據(jù)庫(kù)->右鍵->分離數(shù)據(jù)庫(kù)
      ---------------------
      SQL2005事務(wù)日志已滿的解決方案今 天打開(kāi)網(wǎng)站,突然發(fā)現(xiàn)sql 2005出現(xiàn)錯(cuò)誤:數(shù)據(jù)庫(kù) 'mybase_db' 的事務(wù)日志已滿。若要查明無(wú)法重用日志中的空間的原因,請(qǐng)參閱 sys.databases 中的 log_reuse_wait_desc 列。
      在網(wǎng)上查了下,終于找到了解決辦法:
      復(fù)制代碼 代碼如下:www.wf0088.com

      --先備份數(shù)據(jù)庫(kù)
      --截?cái)嗍聞?wù)日志
      backuplog mybase_dbwithno_log
      go
      --收縮數(shù)據(jù)庫(kù)
      dbccshrinkdatabase(mybase_db)
      go
      OK,搞定
      ----------------
      --SQL2005 自動(dòng)備份的腳本
      declare @DBName varchar(200)
      set @DBName='ReportServer$SQL2005'
      -- 截?cái)嗳罩?
      DUMP TRANSACTION @DBName WITH NO_LOG
      --收縮數(shù)據(jù)庫(kù)
      DBCC SHRINKDATABASE (@DBName,TRUNCATEONLY)
      --備份數(shù)據(jù)庫(kù)
      USE master
      declare @Version varchar(20)
      declare @DateAppend varchar(20)
      declare @BasePath varchar(200)
      declare @BakPath varchar(200)
      --設(shè)定備份的基本目錄
      set @BasePath='f:\tmp'
      --設(shè)定版本,每個(gè)版本的備份放在不同的地方
      set @Version='V6.1'
      --設(shè)定備份的完整路徑
      set @BakPath=@BasePath+'\'+ @Version +'\Db.Bak'
      USE master
      --創(chuàng)建備份設(shè)備,如果存在則無(wú)需建立
      if exists(select * from sysdevices where name='CTOS_DB_Bak')
      begin
      EXEC sp_dropdevice 'CTOS_DB_Bak'
      declare @tmpcmd varchar(100)
      set @tmpcmd='del ' + @BakPath
      EXEC sp_configure 'show advanced options',1
      RECONFIGURE
      EXEC sp_configure 'xp_cmdshell', 1
      RECONFIGURE
      exec master..xp_cmdshell @tmpcmd
      EXEC sp_configure 'show advanced options', 1
      RECONFIGURE
      EXEC sp_configure 'xp_cmdshell', 0
      RECONFIGURE
      end
      EXEC sp_addumpdevice 'disk','CTOS_DB_Bak',@BakPath
      --備份數(shù)據(jù)庫(kù)
      BACKUP DATABASE @DBName TO CTOS_DB_Bak

      ------------------------------------

      建議更改數(shù)據(jù)庫(kù)的事務(wù)日志,限制文件增長(zhǎng)的最大值和定期備份日志和數(shù)據(jù)。在以下處理之前,最好整體備份整個(gè)數(shù) 據(jù)庫(kù):
      1:由小的事務(wù)引起日志溢出,系統(tǒng)能正常啟動(dòng)。
      解決辦法:
      擴(kuò)大數(shù)據(jù)庫(kù)日志空間:
      alter database 數(shù)據(jù)庫(kù)名 on 設(shè)備名=數(shù)量(M為單位)
      sp_logdevice 數(shù)據(jù)庫(kù)名,設(shè)備名
      清除日 志
      dump transaction 數(shù)據(jù)庫(kù)名 with no_log(no_truncate)
      2:由大的事物引起日志 溢出,系統(tǒng)較長(zhǎng)時(shí)間內(nèi)無(wú)法正常啟動(dòng)或數(shù)據(jù)庫(kù)無(wú)法恢復(fù)
      解決辦法:
      強(qiáng)行清空日志。
      在實(shí)在無(wú)法恢復(fù)數(shù)據(jù)庫(kù)或有近 期備份的情況下,可采用強(qiáng)行清空日志的方法。采取這種方法的后果有可能徹底破壞數(shù)據(jù)庫(kù)。執(zhí)行步驟如下:
      Ⅰ 以-v 方式啟動(dòng)SQL SERVER(不檢測(cè)日志)
      Ⅱ 修改數(shù)據(jù)庫(kù)狀態(tài)為-32768(阻塞狀態(tài))
      update sysdatabases set status=-32768 where name=數(shù)據(jù)庫(kù)名
      Ⅲ 授權(quán)sybase_ts_role權(quán)限(sybase_ts_role為SQL SERVER特殊管理員權(quán)限,在日常的數(shù)據(jù)庫(kù)管理中,不需要這個(gè)角色)
      sp_role “grant”,”sybase_ts_role”,sa
      set role “sybase_ts_role”
      Ⅳ 清除日志
      dbcc rebuild_log(數(shù)據(jù)庫(kù)名,1,1)
      完成以上步驟后,重新啟動(dòng)SQL SERVER即可。如果數(shù)據(jù)庫(kù)能正常啟動(dòng),數(shù)據(jù)庫(kù)就恢復(fù)完成;如果無(wú)法啟動(dòng),只能重新創(chuàng)建數(shù)據(jù)庫(kù)。
      =================================================================壓縮日志
      1:截?cái)嗍聞?wù)日志:
      BACKUP LOG 數(shù)據(jù)庫(kù)名 WITH NO_LOG
      2:清空 日志
      DUMP TRANSACTION 庫(kù)名 WITH NO_LOG
      再:
      企業(yè)管理器--右鍵你要壓縮的數(shù)據(jù)庫(kù) --所有任務(wù)--收縮數(shù)據(jù)庫(kù)--收縮文件--選擇日志文件--在收縮方式里選擇收縮至XXM,這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定 就可以了
      3: 刪除LOG
      1:分離數(shù)據(jù)庫(kù) 企業(yè)管理器->服務(wù)器->數(shù)據(jù)庫(kù)->右鍵->分離數(shù)據(jù)庫(kù)
      2:刪 除LOG文件
      3:附加數(shù)據(jù)庫(kù) 企業(yè)管理器->服務(wù)器->數(shù)據(jù)庫(kù)->右鍵->附加數(shù)據(jù)庫(kù)
      此法生成新的LOG,大小只有500多K
      再 將此數(shù)據(jù)庫(kù)設(shè)置自動(dòng)收縮
      或用代碼:
      下面的示例分離 pubs,然后將 pubs 中的一個(gè)文件附加到當(dāng)前服務(wù)器。
      復(fù)制代碼 代碼如下:www.wf0088.com

      EXEC sp_detach_db @dbname = 'pubs'
      EXEC sp_attach_single_file_db @dbname = 'pubs',
      @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

      4: 如果想以后不讓它增長(zhǎng)
      企業(yè)管理器--服務(wù)器--右鍵 數(shù)據(jù)庫(kù)--屬性--事務(wù)日志--將文件增長(zhǎng)限制為xM(x是你允許的最大數(shù)據(jù)文件大小)
      --SQL語(yǔ)句的設(shè)置方式:
      alter database 數(shù)據(jù)庫(kù)名 modify file(name=邏輯文件名,maxsize=20)
      5.設(shè)置為自動(dòng)收縮
      企 業(yè)管理器--服務(wù)器--右鍵數(shù)據(jù)庫(kù)--屬性--選項(xiàng)--選擇"自動(dòng)收縮" sql2005 簡(jiǎn)單恢復(fù)模式下 使用backup log with NO_log是否沒(méi)有意義?
      -- 第一步:清空日志 DUMP TRANSACTION [YZGA] WITH NO_LOG -- 第二步:截?cái)嗍聞?wù)日志 BACKUP LOG [YZGA] WITH NO_LOG -- 第三步:收縮數(shù)據(jù)庫(kù) DBCC SHRINKDATABASE([YZGA]) ========================================================== 日志: 不推薦使用 BACKUP LOG WITH TRUNCATE_ONLY 或 WITH NO_LOG。應(yīng)使用簡(jiǎn)單恢復(fù)模式自動(dòng)截?cái)嗍聞?wù)日志。 有關(guān)更多信息,請(qǐng)參閱在 http://go.microsoft.com/fwlink/events.asp 的幫助和支持中心。 NO_LOG | TRUNCATE_ONLY 通過(guò)放棄活動(dòng)日志以外的所有日志,無(wú)需備份復(fù)制日志即可刪除不活動(dòng)的日志部分,并截?cái)嗳罩尽T撨x項(xiàng)會(huì)釋放空間。因?yàn)椴⒉槐4嫒罩緜浞荩詻](méi)有必要指定備 份設(shè)備。NO_LOG 和 TRUNCATE_ONLY 是同義的。 注意: 在 SQL Server 的未來(lái)版本中將刪除該選項(xiàng)。應(yīng)避免使用該選項(xiàng)進(jìn)行新的開(kāi)發(fā)工作,并計(jì)劃修改當(dāng)前使用它的應(yīng)用程序。 使用 NO_LOG 或 TRUNCATE_ONLY 截?cái)嗳罩竞螅涗浽谌罩局械母牟豢苫謴?fù)。為了進(jìn)行恢復(fù),請(qǐng)立即執(zhí)行 BACKUP DATABASE 以執(zhí)行完整備份或完整差異備份。 注意: 盡管可用該選項(xiàng)手動(dòng)截?cái)嗍聞?wù)日志,但是我們極力建議您不要這樣做,因?yàn)檫@會(huì)將日志鏈斷開(kāi)。在下一次完整備份或完整差異備份之前,將無(wú)法為數(shù)據(jù)庫(kù)提供媒體故 障保護(hù)。只在非常特殊的情況下才手動(dòng)截?cái)嗳罩荆⒘⒓磩?chuàng)建數(shù)據(jù)備份。 注意: 如果不想進(jìn)行日志備份,請(qǐng)將數(shù)據(jù)庫(kù)設(shè)置為簡(jiǎn)單恢復(fù)模式。

      分享:Win7 32/64位系統(tǒng)下安裝SQL2005和SP3補(bǔ)丁安裝教程[圖文]
      今天有網(wǎng)友問(wèn)win7 64系統(tǒng)下能安裝sql2005嗎,答案是肯定了,大家可以參考下面這篇文章試試

      來(lái)源:模板無(wú)憂//所屬分類:Mssql數(shù)據(jù)庫(kù)教程/更新時(shí)間:2013-04-21
      相關(guān)Mssql數(shù)據(jù)庫(kù)教程