下面有兩個(gè)SQL語句可以達(dá)到在SQL
創(chuàng)新互聯(lián)建站專注于輝南網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供輝南營銷型網(wǎng)站建設(shè),輝南網(wǎng)站制作、輝南網(wǎng)頁設(shè)計(jì)、輝南網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造輝南網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供輝南網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
Server
2005/2008壓縮指定數(shù)據(jù)庫文件和日志的大小的效果:
1、DBCC
SHRINKDATABASE
(Transact-SQL)
收縮指定數(shù)據(jù)庫中的數(shù)據(jù)文件和日志文件的大小。
語法
DBCC
SHRINKDATABASE
(
'database_name'
|
database_id
|
[
,target_percent
]
[
,
{
NOTRUNCATE
|
TRUNCATEONLY
}
]
)
[
WITH
NO_INFOMSGS
]
參數(shù)
'database_name'
|
database_id
|
要收縮的數(shù)據(jù)庫的名稱或
ID。如果指定
0,則使用當(dāng)前數(shù)據(jù)庫。
target_percent
數(shù)據(jù)庫收縮后的數(shù)據(jù)庫文件中所需的剩余可用空間百分比。
NOTRUNCATE
通過將已分配的頁從文件末尾移動(dòng)到文件前面的未分配頁來壓縮數(shù)據(jù)文件中的數(shù)據(jù)。target_percent
是可選參數(shù)。
文件末尾的可用空間不會(huì)返回給操作系統(tǒng),文件的物理大小也不會(huì)更改。因此,指定
NOTRUNCATE
時(shí),數(shù)據(jù)庫看起來未收縮。
NOTRUNCATE
只適用于數(shù)據(jù)文件。日志文件不受影響。
TRUNCATEONLY
將文件末尾的所有可用空間釋放給操作系統(tǒng),但不在文件內(nèi)部執(zhí)行任何頁移動(dòng)。數(shù)據(jù)文件只收縮到最近分配的區(qū)。如果與
TRUNCATEONLY
一起指定,將忽略
target_percent。
TRUNCATEONLY
只適用于數(shù)據(jù)文件。日志文件不受影響。
操作步驟如下:
(1)打開SQL Server企業(yè)管理器。雙擊打開“數(shù)據(jù)庫”節(jié)點(diǎn),在要收縮的數(shù)據(jù)庫名稱上,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“所有任務(wù)”→“收縮數(shù)據(jù)庫”命令,彈出“收縮數(shù)據(jù)庫”對(duì)話框,如圖1所示。
圖1 收縮數(shù)據(jù)庫
(2)指定數(shù)據(jù)庫的收縮量,可以從以下選項(xiàng)中選擇。
在“收縮后文件中的最大可用空間”文本框中輸入收縮后數(shù)據(jù)庫中剩余的可用空間量。以“數(shù)據(jù)庫大小,可用空間”值作為依據(jù)。如最大可用空間是“25%”,則在該選項(xiàng)中設(shè)置小于該數(shù)值的百分比,如“12%”。
選擇“在收縮前將頁移到文件起始位置”復(fù)選框,使釋放的文件空間保留在數(shù)據(jù)庫文件中,并使包含數(shù)據(jù)的頁移到數(shù)據(jù)庫文件的起始位置。
(3)在“調(diào)度”選項(xiàng)框中,選擇是否自動(dòng)定期執(zhí)行數(shù)據(jù)庫壓縮操作。選中“根據(jù)本調(diào)度來收縮數(shù)據(jù)庫”復(fù)選框,單擊“更改”按鈕,創(chuàng)建或更改自動(dòng)收縮數(shù)據(jù)庫的頻率和時(shí)間。
(4)最后單擊“確定”按鈕完成操作。
你用數(shù)據(jù)庫管理器選中數(shù)據(jù)庫,先分離,然后再附加,然后再點(diǎn)收縮,收縮的時(shí)候先收縮日志文件,一般能收縮很多,記得要填寫數(shù)字啊,比如上面提示能收縮為0,你就填個(gè)5兆,這樣預(yù)留一點(diǎn)空間,而且很快,收縮完日志文件之后再收縮數(shù)據(jù)庫 同理比最小能收縮量大幾兆就可以了,但是收縮數(shù)據(jù)庫比較慢 需要很多時(shí)間
在程序組中,展開“Sqlserver”運(yùn)行“查詢分析器”。輸入用戶名、密碼。
在工具欄的數(shù)據(jù)庫列表中選擇要操作的數(shù)據(jù)庫。
輸入:select * from sysfiles 執(zhí)行,可以看到下面的內(nèi)容,記住其中的fileid字段的內(nèi)容,也就是1或2,標(biāo)識(shí)數(shù)據(jù)庫的數(shù)據(jù)文件或日志文件,下面的命令要用到這里的值。
輸入:dbcc?shrinkdatabase('?庫名'?),收縮數(shù)據(jù)庫,結(jié)果如下:可以看到壓縮后的數(shù)據(jù)庫文件的尺寸。
輸入:dbcc?shrinkfile(2,?0)執(zhí)行,然后輸入dbcc?shrinkfile(1,?0)執(zhí)行。兩句命令中的第一個(gè)參數(shù)就是前面看到的FileID的值,表示了一個(gè)是日志文件,一個(gè)是數(shù)據(jù)文件。第二個(gè)參數(shù)0,表示收縮到初始大小。
輸入:dbcc updateusage (0),執(zhí)行更新操作,完工!更新后可以跟之前的數(shù)據(jù)文件比對(duì)一下了,會(huì)有相對(duì)較大的尺寸上的優(yōu)化了。
直接壓縮不太現(xiàn)實(shí)啊,文件太大需要的時(shí)間太長了。
如果里面的數(shù)據(jù)資料不重要,只是數(shù)據(jù)結(jié)構(gòu)重要的話,可以再導(dǎo)出一個(gè)只含數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)庫副本。
或者 如果日志文件不重要的話,可以只導(dǎo)出數(shù)據(jù)庫本身,不導(dǎo)出日志。
最后,7G文件也不算大,我這里就是用一個(gè)160G的移動(dòng)硬盤備份的,不過一定要把硬盤格式化成NTFS格式。
壓縮數(shù)據(jù)文件最大的好處就是節(jié)約磁盤空間。這個(gè)東西對(duì)于中小型數(shù)據(jù)庫而言,意義可能體現(xiàn)的并不明顯,但是如果放在大型或者超大型數(shù)據(jù)庫上,那么價(jià)值就非??捎^了。
例如某大型數(shù)據(jù)庫,備份文件在沒有壓縮前,大小可能在500G左右,壓縮后大小大約在70G左右,可節(jié)約430G,而一個(gè)大型的IT企業(yè),這種數(shù)據(jù)庫還并不是核心庫,核心庫會(huì)更大,并且還會(huì)伴隨多種高可用技術(shù)(更多的冗余)。例如騰訊或者阿里巴巴或者百度,那么多的業(yè)務(wù),全國各地總服務(wù)器加起來可能上百臺(tái)甚至上千臺(tái),按300臺(tái)DB Server計(jì)算,如果單臺(tái)能節(jié)省430G存儲(chǔ),300臺(tái)Server可以節(jié)約125TB的存儲(chǔ),這是非常可觀的一筆開銷。