程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> Sqlserver 2000/2005/2008 的壓縮日記辦法和清算日記辦法

Sqlserver 2000/2005/2008 的壓縮日記辦法和清算日記辦法

編輯:MSSQL

Sqlserver 2000/2005/2008 的壓縮日記辦法和清算日記辦法。本站提示廣大學習愛好者:(Sqlserver 2000/2005/2008 的壓縮日記辦法和清算日記辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Sqlserver 2000/2005/2008 的壓縮日記辦法和清算日記辦法正文


1、設置數據庫形式為簡略形式:翻開SQL企業治理器,在掌握台根目次中順次點開Microsoft SQL Server-->SQL Server組-->雙擊翻開你的辦事器-->雙擊翻開數據庫目次-->選擇你的數據庫稱號(如服裝論壇t.vhao.net數據庫Forum)-->然後點擊右鍵選擇屬性-->選擇選項-->在毛病復原的形式當選擇“簡略”,然後按肯定保留
2、在以後數據庫上點右鍵,看一切義務中的壓縮數據庫,普通外面的默許設置不消調劑,直接點肯定
3、壓縮數據庫完成後,建議將您的數據庫屬性從新設置為尺度形式,操作辦法同第一點,由於日記在一些異常情形下常常是恢單數據庫的主要根據。

最簡略直接詳細以下:

1、下載:日記清算壓縮對象 http://www.jb51.net/softs/57621.html

sql 日記清算壓縮辦法講授:
1、天然是下載日記清算軟件。
2、在辦事器上運轉trunc.exe,翻開軟件。

這裡用戶名必定是sa 暗碼你必需記得sa 的暗碼,這個很主要,否則就會查詢不到響應的數據庫了。輸出暗碼後就點數據庫。你的辦事器數據庫就出現出來了。

你想壓縮哪個就選哪個吧。你應當懂了吧!好用簡略便利哦。

2、SQL2008 的壓縮日記 因為SQL2008對文件和日記治理停止了優化,所以以下語句在SQL2005中可以運轉但在SQL2008中曾經被撤消: (SQL2005) Backup Log DNName with no_log go dump transaction DNName with no_log go USE DNName DBCC SHRINKFILE (2)
Go -------------------------------------------------------------- (SQL200: 在SQL2008中消除日記就必需在簡略形式下停止,等消除舉措終了再調回到完整形式。 USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE DNName SET RECOVERY SIMPLE --簡略形式 GO USE DNName GO DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY) GO USE [master] GO ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE DNName SET RECOVERY FULL --復原為完整形式 GO 長處:此消除日記所運轉消費的時光短,90GB的日記在分鐘閣下便可消除終了,做完以後做個完整備份在分鐘內便可完成。缺陷: 不外此舉措最好不要常常應用,由於它的運轉會帶來體系碎片。通俗狀況下LOG和DIFF的備份便可截斷日記。此語句應用的適當情況:當體系的日記文件異常增年夜或許備份LOG時光太長能夠影響臨盆的情形下應用。

2005辦法1:

第一步:

backup log database_name with no_log
或許 backup log database_name with truncate_only --no_log和truncate_only是在這裡是同義的,隨意履行哪一句都可以

第二步:

1.壓縮特定命據庫的一切數據和日記文件,履行 dbcc shrinkdatabase (database_name,[,target_percent])--database_name是要壓縮的數據庫稱號;target_percent是數據庫壓縮後的數據庫文件中所要的殘剩可用空間百分比
2.壓縮一次一個特定命據庫中的數據或日記文件,履行 dbcc shrinkfile(file_id,[,target_size]) --file_id是要壓縮的文件的標識 (ID) 號,若要取得文件 ID,請應用 FILE_ID 函數或在以後數據庫中搜刮 sysfiles;target_size是用兆字節表現的所要的文件年夜小(用整數表現)。假如沒有指定,dbcc shrinkfile 將文件年夜小削減到默許文件年夜小
兩個dbcc都可以帶上參數notruncate或truncateonly,詳細意思看贊助。
辦法2
(這個辦法在sqlserver2000的情況下做普通能勝利,在sqlserver7及以下版本就紛歧定了):
第一步:
先備份全部數據庫以備意外
第二步:
備份停止後,在Query Analyzer中履行以下的語句:
exec sp_detach_db yourDBName,true --卸除這個DB在MSSQL中的注冊信息
第三步:
到日記的物理文件地點的目次中去刪除該日記文件或許將該日記文件移出該目次
第四步:
在Query Analyzer中履行以下的語句:
exec sp_attach_single_file_db yourDBName,'d:\mssql7\data\yourDBName_data.mdf'
--以單文件的方法注冊該DB,假如勝利則MSSQL將主動為這個DB生成一個500K的日記文件。
以上辦法在消除log日記中均有用。
但,可否讓sql server 不發生log日記呢?以上辦法似乎均有效。
我這兒正好有個case:
我客戶的sql server天天都邑發生4,500M的log日記,天天都消除一下,異常未便。有無方法完成不發生log日記呢?
我剖析了一下客戶發生log日記的緣由,而且做了響應測試。
客戶是天天將數據庫清空,從總體系中將數據導入到sql server裡。我感決sqlserver在拔出時發生log不年夜,在delete全部庫時發生log極年夜。
好比:
SELECT * into test_2 from b_bgxx
共45000筆記錄,發生十幾M log,假如
delete from test_2
發生80多M log ,這顯著存在成績。
固然可以換成:
truncate table test_2
但我照樣願望能找到不發生log的辦法。就如oracle不發生歸檔一樣。
3、Server 2005 : 清空數據庫日記
日記文件滿而形成SQL數據庫沒法寫入文件時,可用兩種辦法:
辦法一:清空日記。
1.翻開查詢剖析器,輸出敕令
DUMP TRANSACTION 數據庫名 WITH NO_LOG
2.再翻開企業治理器--右鍵你要緊縮的數據庫--一切義務--壓縮數據庫--壓縮文件--選擇日記文件--在壓縮方法裡選擇壓縮至XXM,這裡會給出一個許可壓縮到的最小M數,直接輸出這個數,肯定便可以了。
另外一種辦法有必定的風險性,由於SQL SERVER的日記文件不是即時寫入數據庫主文件的,如處置欠妥,會形成數據的喪失。
辦法二:
1: 刪除LOG
分別數據庫 企業治理器->辦事器->數據庫->右鍵->分別數據庫
2:刪除LOG文件
附加數據庫 企業治理器->辦事器->數據庫->右鍵->附加數據庫
此法生成新的LOG,年夜小只要500多K。
留意:建議應用第一種辦法。
假如想今後不讓它增加
企業治理器--辦事器--右鍵數據庫--屬性--事務日記--將文件增加限制為xM(x是你許可的最年夜數據文件年夜小)
--SQL語句的設置方法:
alter database 數據庫名 modify file(name=邏輯文件名,maxsize=20)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved