創建數據庫後
可以對其原始定義進行更改
更改包括
擴充分配給數據庫的數據或事務日志空間
收縮分配給數據庫的數據或事務日志空間
添加或刪除數據和事務日志文件
創建文件組
創建默認文件組
更改數據庫的配置設置
脫機放置數據庫
附加新數據庫或分離未使用的數據庫
更改數據庫名稱
更改數據庫的所有者
擴充數據庫
Microsoft® SQL Server
;
可根據在創建數據庫時所定義的增長參數
自動擴充數據庫
通過在現有的數據庫文件上分配其它的文件空間
或者在另一個新文件上分配空間
還可以手動擴充數據庫
如果現有的文件已經充滿
則可能需要擴充數據或事務日志空間
如果數據庫已經用完分配給它的空間而又不能自動增長
則會出現
錯誤
擴充數據庫時
必須按至少
MB 增加該數據庫的大小
擴充數據庫的權限默認授予數據庫所有者
並自動與數據庫所有者身份一起傳輸
數據庫擴充後
數據或事務日志文件立即可以使用新空間
這取決於哪個文件進行了擴充
如果事務日志沒有設置為自動擴充
則當數據庫內發生某些類型的活動時
該事務日志可能會用完所有空間
備份事務日志時
或者在數據庫使用簡單恢復模型的每個檢查點時
只清除事務日志中非活動(已提交)的部分
然後 SQL Server 可以重新使用該事務日志中被截取的
尚未使用的部分
有關截斷事務日志的更多信息
請參見截斷事務日志
在備份數據庫時
SQL Server 不會截斷事務日志
在擴充數據庫時
建議指定文件的最大允許增長的大小
這樣做可以防止文件無限制地增大
以至用盡整個磁盤空間
若要指定文件的最大大小
請在使用SQL Server 企業管理器內的
屬性
對話框創建數據庫時
使用 CREATE DATABASE 語句的 MAXSIZE 參數或者
將文件增長限制為 (MB)
選項
擴充數據庫以增大數據或事務日志空間的過程完全相同
擴充 tempdb
默認情況下
在需要空間時 tempdb 數據庫會自動增長
因為文件的 MAXSIZE 設置為 UNLIMITED
因此
tempdb 可以一直增長
直至用完包含 tempdb 的磁盤上的所有空間
若要防止 tempdb 無限制地增長
請使用 ALTER DATABASE 語句或 SQL Server 企業管理器為 tempdb 設置 MAXSIZE
相反
如果 tempdb 已經設置了 MAXSIZE
而又需要增加 tempdb 的大小
則必須執行以下操作之一
增加 tempdb 當前使用的默認文件組中文件的大小
將新文件添加到默認文件組
允許 tempdb 使用的文件自動增長
重要 用戶定義的文件組不能與 tempdb 一起使用
它們只能與默認文件組一起使用
移動 tempdb
更改 tempdb 數據庫的物理位置
使用 ALTER DATABASE 語句和 MODIFY FILE 子句更改 tempdb 數據庫
以更改 tempdb 中每個文件的物理文件名
使之引用新的物理位置(例如新磁盤)
停止並重新啟動 SQL Server
從原始位置刪除舊的 tempdb 數據庫文件
增加數據庫的大小
Transact
SQL(點擊這裡)
如何增加數據庫的大小(企業管理器)
展開服務器組
然後展開服務器
展開
數據庫
文件夾
右擊要增加大小的數據庫
然後單擊
屬性
命令
若要增加數據空間
單擊
常規
選項卡
若要增加事務日志空間
單擊
事務日志
選項卡
若要添加新文件
單擊下一個空行
在
文件名
列中輸入將容納附加空間的文件名
文件位置是自動生成的
數據庫文件名的後綴名為
ndf
事務日志文件名的後綴為
ldf
若要更改
文件名
位置
分配的空間 (MB)
和
文件組
(不適用於事務日志)等列的默認值
單擊要更改的單元格
再輸入新值
對於現有的文件
只能更改
分配的空間 (MB)
值
並且新值必須大於現有的值
要指定文件如何增長
請從以下選項中選擇
當需要更多的數據空間時
若要允許當前選定的文件增長
選擇
文件自動增長
命令
要指定文件按固定步長增長
選擇
按兆字節
命令並指定一個值
若要指定文件按當前大小的百分比增長
選擇
按百分比
命令
並且指定一個值
若要指定文件大小的限制
請從以下選項中選擇
若要允許文件按需求增長
選擇
文件增長不受限制
命令
若要指定允許文件增長到的最大值
選擇
將文件增長限制為 (MB)
命令
說明 數據庫大小的最大值是由可用磁盤空間量決定
許可限制由正在使用的 SQL Server 版本決定
更改數據庫的物理位置
Transact
SQL(點擊這裡)
收縮數據庫
Microsoft® SQL Server
;
允許收縮數據庫中的每個文件以刪除未使用的頁
數據和事務日志文件都可以收縮
數據庫文件可以作為組或單獨地進行手工收縮
數據庫也可設置為按給定的時間間隔自動收縮
該活動在後台進行
並且不影響數據庫內的用戶活動
當使用 ALTER DATABASE AUTO_SHRINK 選項(或 sp_dboption 系統存儲過程)將數據庫設置為自動收縮
且數據庫中有足夠的可用空間時
則會發生收縮
但是
如果不能配置要刪除的可用空間的百分比
則將刪除盡可能多的可用空間
若要配置將刪除的可用空間量
例如只刪除數據庫中當前可用空間的
%
請使用SQL Server 企業管理器內的
屬性
對話框進行數據庫收縮
不能將整個數據庫收縮到比其原始大小還要小
因此
如果數據庫創建時的大小為
MB
後來增長到
MB
則該數據庫最小能夠收縮到
MB(假定已經刪除該數據庫中所有數據)
但是
使用 DBCC SHRINKFILE 語句
可以將單個數據庫文件收縮到比其初始創建大小還要小
必須分別收縮每個文件
而不要試圖收縮整個數據庫
事務日志文件可在固定的邊界內收縮
虛擬日志的大小決定可能減小的大小
因此
不能將日志文件收縮到比虛擬日志文件還小
另外
日志文件可以按與虛擬日志文件的大小相等的增量收縮
例如
一個初始大小為
GB 的較大事務日志文件可以包括五個虛擬日志文件(每個文件大小為
MB)
收縮事務日志文件將刪除未使用的虛擬日志文件
但會留下至少一個虛擬日志文件
因為此示例中的每個虛擬日志文件都是
MB
所以事務日志最小只能收縮到
MB
且每次只能以
MB的大小收縮
若要讓事務日志文件收縮得更小
可以創建一個更小的事務日志
並允許它自動增長
而不要創建一個較大的事務日志文件
在 SQL Server
中
DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 操作試圖立即將事務日志文件收縮到所要求的大小(以四捨五入的值為准)
在收縮文件之前應截斷日志文件
以減小邏輯日志的大小並將其標記為不包含邏輯日志任何部分的不活動的虛擬日志
說明 不可能在備份數據庫或事務日志時收縮數據庫或事務日志
反之
也不可能在收縮數據庫或事務日志時創建數據庫或事務日志備份
收縮數據庫
Transact
SQL
DBCC SHRINKDATABASE
收縮指定數據庫中的數據文件大小
語法
DBCC SHRINKDATABASE
( database_name [
target_percent ]
[
{ NOTRUNCATE | TRUNCATEONLY } ]
)
參數
database_name
是要收縮的數據庫名稱
數據庫名稱必須符合標識符的規則
target_percent
是數據庫收縮後的數據庫文件中所要的剩余可用空間百分比
NOTRUNCATE
導致在數據庫文件中保留所釋放的文件空間
如果未指定
將所釋放的文件空間釋放給操作系統
TRUNCATEONLY
導致將數據文件中的任何未使用的空間釋放給操作系統
並將文件收縮到上一次所分配的大小
從而減少文件大小
而不移動任何數據
不試圖重新定位未分配頁的行
使用 TRUNCATEONLY 時
忽略 target_percentis
注釋
Microsoft® SQL Server
; 可收縮
特定數據庫的所有數據和日志文件
執行 DBCC SHRINKDATABASE
一次一個特定數據庫中的數據或日志文件
執行 DBCC SHRINKFILE
DBCC SHRINKDATABASE 以每個文件為單位對數據文件進行收縮
然而
DBCC SHRINKDATABASE 在對日志文件進行收縮時
看起來好像所有的日志文件都存在於一個連續的日志池中
假設名為 mydb 的數據庫有兩個數據文件和兩個日志文件
這些數據文件和日志文件大小都為
MB
第一個數據文件包含
MB 數據
對於每個文件
SQL Server 計算目標大小
即要收縮文件到的大小
當用 target_percent 指定 DBCC SHRINKDATABASE 時
SQL Server 計算的目標大小是收縮後文件中的 target_percent 可用空間大
From:http://tw.wingwit.com/Article/os/xtgl/201311/9204.html