【云圖說】第235期 DDS讀寫兩步走 帶您領略只讀節點的風采
1086
2025-03-31
操作場景
華為云SQL Server提供存儲過程,用于收縮數據庫的數據文件和日志文件,以釋放磁盤部分空間。
操作步驟
連接RDS for SQL Server實例,執行以下命令,進行數據庫收縮。
EXEC [master].[dbo].[rds_shrink_database] @DBName = 'myDBName';
參數
myDBName: 要收縮的數據庫名稱。如果未指定,則默認對所有數據庫進行收縮。
結果
A.結果集
返回多個結果集,每個結果對應指定數據庫(或所有數據庫)的每個文件的相關信息。結果集結構如下:
列名稱
說明
DbId
當前收縮的文件的數據庫標識號。
FileId
當前收縮的文件的文件標識號。
CurrentSize
文件當前占用的 8 KB 頁數。
MinimumSize
文件最低可以占用的 8 ? KB 頁數。?此數字對應于文件的大小下限或最初創建大小。
UsedPages
文件當前使用的 8 KB 頁數。
EstimatedPages
數據庫引擎估計文件能夠收縮到的 8 KB 頁數。
B. 消息
打印命令執行進度。
最佳實踐
?? 在執行會產生大量未用空間的操作(如重啟)后,執行收縮操作最有效
?? 大多數數據庫都需要一些可用空間,以供常規日常操作使用。?如果反復收縮數據庫,并且它的大小再次增長,那么常規操作可能需要收縮空間。?在這種情況下,反復收縮數據庫是一種無謂的操作。
?? 收縮操作不保留數據庫中索引的碎片狀態,通常還會在一定程度上增加碎片。?此類碎片是不要反復收縮數據庫的另一個原因。
故障排除
l? 文件未收縮
1.???? 如果在執行存儲過程后文件大小未改變,請運行以下SQL,驗證文件是否有足夠的可用空間:
SELECT name, size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB FROM sys.database_files;
2.???? 如果要收縮的數據庫文件大小不超過50MB,對該文件的收縮將不起作用。且會打印相關提示。如:
l? 收縮操作受阻
基于行版本控制的隔離級別下運行的事務可能會阻止收縮操作。若要解決此問題,請執行下列任務之一:
2? 終止阻止收縮操作的事務。
2? 終止收縮操作。?如果收縮操作終止,所有已完成的工作都會保留。
2? 不執行任何操作,并允許收縮操作等到阻塞事務完成。
示例
收縮指定數據庫
以下示例將 dbtest2 數據庫進行收縮。
EXEC [master].[dbo].[rds_shrink_database] @DBName = 'dbtest2';
執行結果如下:
收縮所有數據庫
以下示例將收縮所有數據庫。
EXEC [master].[dbo].[rds_shrink_database];
華為云數據庫 sqlserver 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。