具體方法有3種。
方法一:
第一步:
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,具體意思查看聯機幫助.
方法二:
第一步:
先備份整個資料庫以備不測
。
第二步:
備份結束後,在query
analyzer中執行如下的語句:
exec
sp_detach_db
yourdbname,true
--卸除這個db在mssql中的注冊信息
第三步:
到日誌的物理文件所在的目錄中去刪除該日誌文件或者將該日誌文件移出該目錄
第四步:
在query
analyzer中執行如下的語句:
exec
sp_attach_single_file_db
yourdbname,'
d:\mssql\data\yourdbname_data.mdf
'
--以單文件的方式注冊該db,如果成功則mssql將自動為這個db生成一個500k的日誌文件。
方法三:
1.
進入企業管理器,選中資料庫,比如demo
2.
所有任務->分離資料庫
3.
到資料庫文件的存放目錄,將muonline_log.ldf文件刪除,以防萬一,你可以拷出去
4.
企業管理器->附加資料庫,選muonline,這個時候你會看見日誌文件這項是一個叉,不要緊,繼續,此時資料庫就會提示你該資料庫無日誌是否創建一個新的,確定就是了。
5.
記得資料庫重新附加後用戶要重新設置一下。
如果以後,不想要它變大:
sql2000下使用:
在資料庫上點右鍵->屬性->選項->故障恢復-模型-選擇-簡單模型。
或用sql語句:
alter
database
資料庫名
set
recovery
simple
⑵ 如何縮小MSSQL資料庫的大小(日誌)
數據部分存儲的是用戶資料庫中的數據,包含用戶的數據表、視圖、存儲過程等等內容。 數據部分一般存儲與資料庫文件組中的.mdb文件中。一般來說,在正常使用的情況下,這 個部分的大小不會經常性地發生很大的變化,除非是用於存儲論壇之類快速變化的數據內 容。一般而言,這個部分很少會需要縮小。 事務日誌存儲的是用戶資料庫操作的事務記錄,主要是用於在資料庫伺服器發生故障(比 如電源故障之後),恢復資料庫中的數據完整性而用的。這個部分一般存儲於資料庫文件 組中的.ldf文件中。這個部分的大小經常會發生劇烈的變化。 在某些情況下,由於用戶的查詢語句(SQL語句)書寫的問題,會造成資料庫文件大小的 急劇膨脹,尤其是日誌文件會變得非常大。這個時候需要對資料庫加以縮小。縮小的操作 分為兩個步驟: 步驟一 截斷資料庫中的日誌內容 BACKUP LOG 資料庫名稱 WITH TRUNCATE_ONLY 步驟二 強制資料庫壓縮其大小 DBCC SHRINKDATABASE ( 資料庫名稱 , TRUNCATEONLY ) 這兩個步驟需要使用查詢分析器來執行。關於其具體的意義,請參考mssql(WINDOWS平台上強大的資料庫平台)資料庫附帶的
⑶ mssql資料庫太大怎麼壓縮
資料庫在使用一段時間後,時常會出現因數據刪除而造成資料庫中空閑空間太多的情況,這時就需要減少分配給資料庫文件和事務日誌文件的磁碟空間,以免浪費磁碟空間。當資料庫中沒有數據時,可以修改資料庫文件屬性直接改變其佔用空間,但當資料庫中有數據時,這樣做會破壞資料庫中的數據,因此需要使用壓縮的方式來縮減資料庫空間。可以在資料庫屬性選項中選擇「Auto shrink」選項,讓系統自動壓縮資料庫,也可以用人工的方法來壓縮。人工壓縮資料庫有以下兩種方式:
1、用Enterprise Manager 壓縮資料庫
在Enterprise Manager 中在所要壓縮的資料庫上單擊右鍵,從快捷菜單中的「所有任務(All Tasks)」中選擇「Shrink Database(壓縮資料庫)」選項
、用Transact-SQL 命令壓縮資料庫
可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令來壓縮資料庫。其中DBCC SHRINKDATABASE 命令對資料庫進行壓縮,DBCC SHRINKFILE 命令對資料庫中指定的文件進行壓縮。
(1) DBCC SHRINKDATABASE
DBCC SHRINKDATABASE 命令語法如下:
DBCC SHRINKDATABASE (database_name [, target_percent]
[, {NOTRUNCATE | TRUNCATEONLY}] )
各參數說明如下:
target_percent 指定將資料庫壓縮後,未使用的空間占資料庫大小的百分之幾。如果指定的百分比過大,超過了壓縮前未使用空間所佔的比例,則資料庫不會被壓縮。並且壓縮後的資料庫不能比資料庫初始設定的容量小。
NOTRUECATE
將資料庫縮減後剩餘的空間保留在資料庫,中不返還給操作系統。如果不選擇此選項,則剩餘的空間返還給操作系統。
TRUNCATEONLY
將資料庫縮減後剩餘的空間返還給操作系統。使用此命令時SQL Server 將文件縮減到最後一個文件分配,區域但不移動任何數據文件。選擇此項後,target_percent 選項就無效了。
壓縮資料庫mytest 的未使用空間為資料庫大小的20%。
dbcc shrinkdatabase (mytest, 20)
運行結果如下:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
(2) DBCC SHRINKFILE
DBCC SHRINKFILE 命令壓縮當前資料庫中的文件。其語法如下:
DBCC SHRINKFILE ( {file_name | file_id }
{ [, target_size] |
[, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } )
各參數說明如下:
file_id
指定要壓縮的文件的鑒別號(Identification number, 即ID)。文件的ID 號可以通過 FILE_ID()函數或如本章前面所講述的Sp_helpdb 系統存儲過程來得到。
target_size
指定文件壓縮後的大小。以MB 為單位。如果不指定此選項,SQL Server 就會盡最大可能地縮減文件。
EMPTYFILE
指明此文件不再使用,將移動所有在此文件中的數據到同一文件組中的其它文件中去。執行帶此參數的命令後,此文件就可以用ALTER DATABASE 命令來刪除了。
其餘參數NOTRUNCATE 和TRUNCATEONLY 與DBCC SHRINKDATABASE 命令中的含義相同。
例6-15: 壓縮資料庫mydb 中的資料庫文件mydb_data2 的大小到1MB。 use mydb dbcc shrinkfile (mydb_data2, 1)
⑷ SQL資料庫太大怎麼辦
我有個大的 SQL 文件要回放,需要馬上做,但又怕壓死業務,怎麼辦?
先來建一個測試庫:
可以看到 CPU 已經非常冷靜,並且緩慢的處理數據。
💡小貼士:pv 工具既可以用於顯示文件流的進度,也可以用於文件流的限速。在本實驗中,我們用 PV 來限制 SQL 文件發到 MySQL client 的速度,從而限制 SQL 的回放速度,達到不影響其他業務的效果。
⑸ 怎麼能讓SQL SERVER資料庫變小
在企業管理器中右擊你想要變小的那個庫,選擇『所有任務』選擇『收縮資料庫』
按提示一步步操作就好
如果還不夠小的話,就停止一下資料庫,然後把日誌文件備份,然後刪除
再運行……(可能還要附加一下,刪除日誌文件,我沒試過,不過,我附加過沒有日誌文件的資料庫,應該可以的)
⑹ sql資料庫滿了怎麼清理
-- 清空日誌
--壓縮日誌及資料庫文件大小
/*--特別注意
請按步驟進行,未進行前面的步驟,請不要做後面的步驟
否則可能損壞你的資料庫.
--*/
select*fromsysfiles
--1.清空日誌
DUMPTRANSACTIONusernameWITHNO_LOG
--2.截斷事務日誌:
BACKUPLOGusernameWITHNO_LOG
--3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小
-- 企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件
--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
--選擇數據文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
-- 也可以用SQL語句來完成
--收縮資料庫
DBCCSHRINKDATABASE(username)
--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select*fromsysfiles
DBCCSHRINKFILE(2)
--4.為了最大化的縮小日誌文件(如果是sql7.0,這步只能在查詢分析器中進行)
-- a.分離資料庫:
-- 企業管理器--伺服器--資料庫--右鍵--分離資料庫
-- b.在我的電腦中刪除LOG文件
-- c.附加資料庫:
-- 企業管理器--伺服器--資料庫--右鍵--附加資料庫
-- 此法將生成新的LOG,大小隻有500多K
-- 或用代碼:
-- 下面的示例分離username,然後將username中的一個文件附加到當前伺服器。
execsp_dboptionusername,'singleuser',true
a.分離
EXECsp_detach_db@dbname='username'
b.刪除日誌文件
execmaster..xp_cmdshell'delD:\ProgramFiles\SQL\database\username_LOG.ldf'
c.再附加
EXECsp_attach_single_file_db@dbname='username',
@physname='D:\ProgramFiles\SQL\database\username_Data.MDF'
--5.為了以後能自動收縮,做如下設置:
-- 企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"
--SQL語句設置方式:
EXECsp_dboption'資料庫名','autoshrink','TRUE'
--6.如果想以後不讓它日誌增長得太大
-- 企業管理器--伺服器--右鍵資料庫--屬性--事務日誌
--將文件增長限制為xM(x是你允許的最大數據文件大小)
--SQL語句的設置方式:
alterdatabase資料庫名modifyfile(name=邏輯文件名,maxsize=20)
⑺ SQL資料庫文件太大怎麼處理
處理方法:
1、用BACKUP LOG database WITH NO_LOG清除日誌
把資料庫屬性中的故障還原模型改為「簡單」可以大大減慢日誌增長的速度。
用BACKUP LOG database WITH NO_LOG命名後,會截斷不活動日誌,不減小物理日誌文件的大小,但邏輯日誌會減小,收縮資料庫後會把不活動虛擬日誌刪除來釋放空間,不會損壞數據。
如果日誌被截斷並收縮資料庫後,就不能直接用最近的一個全庫備份做時間點還原,建議立即備份資料庫,以防萬一。
2、sql server運行中,刪除主資料庫事務日誌文件,步驟如下:
(1)、分離資料庫管理器-資料庫-右擊要刪除日誌的資料庫-所有任務-分離資料庫
(2)、然後刪除日誌文件
(3)、然後再附加資料庫
企業管理器-資料庫-右擊資料庫-所有任務-附加資料庫時只附加mdf.
3、壓縮SQL資料庫及日誌的詳細方法
可以在資料庫屬性選項中選擇「Auto shrink」選項,讓系統自動壓縮資料庫,也可以用人工的方法來壓縮。
⑻ 如何收縮sqlserver資料庫
本主題介紹如何使用 SQL Server Management Studio
中的對象資源管理器收縮資料庫。收縮後的資料庫不能小於資料庫的最小大小。最小大小是在資料庫最初創建時指定的大小,或是上一次使用文件大小更改操作(如
DBCC SHRINKFILE)設置的顯式大小。例如,如果資料庫最初創建時的大小為 10 MB,後來增長到 100
MB,則該資料庫最小隻能收縮到 10 MB,即使已經刪除資料庫的所有數據也是如此。
收縮資料庫
在對象資源管理器中,連接到 SQL Server 資料庫引擎實例,然後展開該實例。
展開「資料庫」,再右鍵單擊要收縮的資料庫。
指向「任務」,指向「收縮」,然後單擊「資料庫」。
根據需要,可以選中「在釋放未使用的空間前重新組織文件」復選框。如果選中該復選框,必須為「收縮後文件中的最大可用空間」指定值。
選中該選項的作用與執行 DBCC SHRINKDATABASE 時指定 target_percent 值相同。清除該選項的作用與使用 TRUNCATEONLY 選項執行 DBCC SHRINKDATABASE 相同。TRUNCATEONLY 將文件收縮到最後分配的區。這將減小文件的大小,但不移動任何數據。默認情況下,該選項為清除狀態。
輸入收縮資料庫後資料庫文件中剩下的最大可用空間百分比。允許的值介於 0 和 99 之間。該選項僅在選中「在釋放未使用的空間前重新組織文件」時可用。
單擊「確定」。
收縮資料庫
當
資料庫中的資料庫文件過於龐大或者存在未使用頁時,可以使用收縮資料庫方法來實現對資料庫的收縮,同樣,事務日誌文件也可以收縮。資料庫文件可以作為組或
單獨地進行手工收縮,也可設置為按指定的時間間隔自動收縮。收縮資料庫的活動是在後台進行,並不影響資料庫內的用戶活動。
操作步驟如下:
(1)打開SQL Server企業管理器。雙擊打開「資料庫」節點,在要收縮的資料庫名稱上,單擊滑鼠右鍵,在彈出的快捷菜單中選擇「所有任務」→「收縮資料庫」命令,彈出「收縮資料庫」對話框,如圖1所示。
收縮資料庫
(2)指定資料庫的收縮量,可以從以下選項中選擇。
在「收縮後文件中的最大可用空間」文本框中輸入收縮後資料庫中剩餘的可用空間量。以「資料庫大小,可用空間」值作為依據。如最大可用空間是「25%」,則在該選項中設置小於該數值的百分比,如「12%」。
選擇「在收縮前將頁移到文件起始位置」復選框,使釋放的文件空間保留在資料庫文件中,並使包含數據的頁移到資料庫文件的起始位置。
(3)在「調度」選項框中,選擇是否自動定期執行資料庫壓縮操作。選中「根據本調度來收縮資料庫」復選框,單擊「更改」按鈕,創建或更改自動收縮資料庫的頻率和時間。
(4)最後單擊「確定」按鈕完成操作。
⑼ sql 2008資料庫文件太大,怎麼樣盡量縮小它的大小呢求高手指教
這個在設計資料庫的時候就要考慮,1.
圖片、附件盡量不要存在資料庫中,可以把圖片、附件放在硬碟上,存圖片、附件的文件路徑。2.保存大文本盡量不要用text、ntext,因為這個兩個都是在資料庫里創建一個文件來保存數據,你後面刪除的數據文件也不會刪除的。我暫時想到的就這么多了,有了再補充。