创建数据库后可以对其原始定义进行更改更改包括
扩充分配给数据库的数据或事务日志空间
收缩分配给数据库的数据或事务日志空间
添加或删除数据和事务日志文件
创建文件组
创建默认文件组
更改数据库的配置设置
脱机放置数据库
附加新数据库或分离未使用的数据库
更改数据库名称
更改数据库的所有者
扩充数据库
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 数据库文件
增加数据库的大小
TransactSQL(点击这里)
如何增加数据库的大小(企业管理器)
展开服务器组然后展开服务器
展开数据库文件夹右击要增加大小的数据库然后单击属性命令
若要增加数据空间单击常规选项卡若要增加事务日志空间单击事务日志选项卡
若要添加新文件单击下一个空行在文件名列中输入将容纳附加空间的文件名
文件位置是自动生成的数据库文件名的后缀名为 ndf事务日志文件名的后缀为 ldf
若要更改文件名位置分配的空间 (MB)和文件组(不适用于事务日志)等列的默认值单击要更改的单元格再输入新值
对于现有的文件只能更改分配的空间 (MB)值并且新值必须大于现有的值
要指定文件如何增长请从以下选项中选择
当需要更多的数据空间时若要允许当前选定的文件增长选择文件自动增长命令
要指定文件按固定步长增长选择按兆字节命令并指定一个值
若要指定文件按当前大小的百分比增长选择按百分比命令并且指定一个值
若要指定文件大小的限制请从以下选项中选择
若要允许文件按需求增长选择文件增长不受限制命令
若要指定允许文件增长到的最大值选择将文件增长限制为 (MB)命令
说明数据库大小的最大值是由可用磁盘空间量决定许可限制由正在使用的 SQL Server 版本决定
更改数据库的物理位置
TransactSQL(点击这里)
收缩数据库
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 操作试图立即将事务日志文件收缩到所要求的大小(以四捨五入的值为准)在收缩文件之前应截断日志文件以减小逻辑日志的大小并将其标记为不包含逻辑日志任何部分的不活动的虚拟日志
说明不可能在备份数据库或事务日志时收缩数据库或事务日志反之也不可能在收缩数据库或事务日志时创建数据库或事务日志备份
收缩数据库
TransactSQL
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 可用空间大