sqlserver自動收縮
1. sqlServer中的收縮資料庫是什麼意思(sql收縮資料庫命令)
收縮資料庫
資料庫中的每個文件都可以通過刪除未使用的頁的方法來減小。盡管資料庫引擎會有效地重新使用空間,但某個文件多次出現無需原來大小的情況後,收縮文件就變得很有必要了。數據和事務日誌文件都可以減小(收縮)。可以成組或單獨地手動收縮資料庫文件,也可以設置資料庫,使其按照指定的間隔自動收縮。
文件始終從末尾開始收縮。例如,如果有個5GB的文件,並且在DBCCSHRINKFILE語句中將target_size指定為4GB,則資料庫引擎將從文件的最後一個1GB開始釋放盡可能多的空間。如果文件中被釋放的部分包含使用過的頁,則資料庫引擎先將這些頁重新放置到文件的保留部分。只能將資料庫收縮到沒有剩餘的可用空間為止。例如,如果某個5GB的資料庫有4GB的數據,並且在DBCCSHRINKFILE語句中將target_size指定為3GB,則只能釋放1GB。
自動資料庫收縮
將AUTO_SHRINK資料庫選項設置為ON後,資料庫引擎將自動收縮具有可用空間的資料庫。此選項可以使用ALTERDATABASE語句來進行設置。默認情況下,此選項設置為OFF。資料庫引擎會定期檢查每個資料庫的空間使用情況。如果某個資料庫的AUTO_SHRINK選項設置為ON,則資料庫引擎將減少資料庫中文件的大小。該活動在後台進行,並且不影響資料庫內的用戶活動。
將資料庫設置為自動收縮
ALTERDATABASE(Transact-SQL)
手動資料庫收縮
您可以使用DBCC語句或DBCCSHRINKFILE語句來手動收縮資料庫或資料庫中的文件。如果DBCC或DBCCSHRINKFILE語句無法回收日誌文件中的所有指定空間,則該語句將發出信息性消息,指明必須執行什麼操作以便釋放更多空間。有關收縮日誌文件的詳細信息,請參閱收縮事務日誌。
在該過程中任意時間都可停止DBCC和DBCCSHRINKFILE操作,所有已完成工作都將保留。
在使用DBCC語句時,您無法將整個資料庫收縮得比其初始大小更小。因此,如果資料庫創建時的大小為10MB,後來增長到100MB,則該資料庫最小隻能收縮到10MB,即使已經刪除資料庫的所有數據也是如此。
但是,使用DBCCSHRINKFILE語句時,可以將各個資料庫文件收縮得比其初始大小更小。必須對每個文件分別進行收縮,而不能嘗試收縮整個資料庫。
2. SQL Server 壓縮日誌及資料庫文件大小
請按步驟進行 未進行前面的步驟時 請不要做後面的步驟 以免損壞你的資料庫
一般不建議做第 兩步 第 步不安全 有可能損壞資料庫或丟失數據 第 步如果日誌達到上限 則以後的資料庫處理會失敗 在清理日誌後才能恢復
清空日誌
DUMP TRANSACTION 庫名 WITH NO_LOG
截斷事務日誌
BACKUP LOG 資料庫名 WITH NO_LOG
收縮資料庫文件(如果不壓縮 資料庫的文件不會減小
企業管理器 右鍵你要壓縮的資料庫 所有任務 收縮資料庫 收縮文件
選擇日誌文件 在收縮方式里選擇收縮至XXM 這里會給出一個允許收縮到的最小M數 直接輸入這個數 確定就可以了
選擇數據文件 在收縮方式里選擇收縮至XXM 這里會給出一個允許收縮到的最小M數 直接輸入這個數 確定就可以了
也可以用SQL語句來完成
收縮資料庫
DBCC SHRINKDATABASE(客戶資料)
收縮指定數據文件 是文件號 可以通過這個語句查詢到:
select * from sysfiles
DBCC SHRINKFILE( )
為了最大化的縮小日誌文件(如果是sql 這步只能在查詢分析器中進行)
a 分離資料庫:
企業管理器 伺服器 資料庫 右鍵 分離資料庫
b 在我的電腦中刪除LOG文件
c 附加資料庫:
企業管理器 伺服器 資料庫 右鍵 附加資料庫
此法將生成新的LOG 大小隻有 多K
或用代碼
下面的示例分離 pubs 然後將 pubs 中的一個文件附加到當前伺服器
a 分離
EXEC sp_detach_db @dbname = pubs
b 刪除日誌文件
c 再附加
EXEC sp_attach_single_file_db @dbname = pubs
@physname = c:/Program Files/Microsoft
SQL Server/MSSQL/Data/pubs mdf
為了以後能自動收縮 做如下設置
企業管理器 伺服器 右鍵資料庫 屬性 選項 選擇 自動收縮
SQL語句設置方式:
EXEC sp_dboption 資料庫名
autoshrink TRUE
如果想以後不讓它日誌增長得太大
企業管理器 伺服器 右鍵資料庫 屬性 事務日誌
將文件增長限制為xM(x是你允許的最大數據文件大小)
SQL語句的設置方式:
lishixin/Article/program/SQLServer/201311/22266
3. SQL Server資料庫的收縮一直在執行
刪除表給資料庫縮小空間時:執行如下操作老是存在執行了5,6個小時,還是一直沒有執行完成。
在開啟自動收縮選項的情況下,SQLServer定期會檢查文件使用情況。如果空閑空間大於25%,SQLServer就會自動運行自動收縮資料庫文件的動作。