数据库日志文件收缩文档

上传人:枫** 文档编号:542879295 上传时间:2023-01-18 格式:DOCX 页数:7 大小:14.85KB
返回 下载 相关 举报
数据库日志文件收缩文档_第1页
第1页 / 共7页
数据库日志文件收缩文档_第2页
第2页 / 共7页
数据库日志文件收缩文档_第3页
第3页 / 共7页
数据库日志文件收缩文档_第4页
第4页 / 共7页
数据库日志文件收缩文档_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《数据库日志文件收缩文档》由会员分享,可在线阅读,更多相关《数据库日志文件收缩文档(7页珍藏版)》请在金锄头文库上搜索。

1、数据库sqlserver 2005 日志文件压缩文档如何压缩SQL Server 2005指定数据库文件和日志的大小? 下面有两个SQL语句可以达到在SQL Server 2005/2008压缩指定数据库文件和日志的大小的效果:1、DBCC SHRINKDATABASE (Transact-SQL)收缩指定数据库中的数据文件和日志文件的大小。语法 DBCC SHRINKDATABASE ( database_name | database_id | 0 ,target_percent , NOTRUNCATE | TRUNCATEONLY ) WITH NO_INFOMSGS 参数 datab

2、ase_name | database_id | 0 要收缩的数据库的名称或 ID。如果指定 0,则使用当前数据库。target_percent 数据库收缩后的数据库文件中所需的剩余可用空间百分比。NOTRUNCATE 通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。target_percent 是可选参数。 文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,数据库看起来未收缩。 NOTRUNCATE 只适用于数据文件。日志文件不受影响。TRUNCATEONLY 将文件末尾的所有可用空间释放给操作系统,但不在文件内部

3、执行任何页移动。数据文件只收缩到最近分配的区。如果与 TRUNCATEONLY 一起指定,将忽略 target_percent。 TRUNCATEONLY 只适用于数据文件。日志文件不受影响。WITH NO_INFOMSGS 取消严重级别从 0 到 10 的所有信息性消息。备注 若要收缩特定数据库的所有数据和日志文件,请执行 DBCC SHRINKDATABASE 命令。若要一次收缩一个特定数据库中的一个数据或日志文件,请执行 DBCC SHRINKFILE 命令。若要查看数据库中当前的可用(未分配)空间量,请运行 sp_spaceused。可在进程中的任一点停止 DBCC SHRINKDAT

4、ABASE 操作,任何已完成的工作都将保留。收缩后的数据库不能小于数据库的最小大小。最小大小是在数据库最初创建时指定的大小,或是使用文件大小更改操作(如 DBCC SHIRNKFILE 或 ALTER DATABASE)显式设置的最后大小。例如,如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。运行 DBCC SHRINKDATABASE 而不指定 NOTRUNCATE 选项或 TRUNCATEONLY 选项等价于带 NOTRUNCATE 运行 DBCC SHRINKDATABASE 操作,然后再带

5、TRUNCATEONLY 运行 DBCC SHRINKDATABASE 操作。要收缩的数据库不必在单用户模式下;其他的用户仍可以在数据库收缩时对其进行工作。这也包括系统数据库。不能在备份数据库时收缩数据库。反之,也不能在数据库执行收缩操作时备份数据库。DBCC SHRINKDATABASE 的工作原理DBCC SHRINKDATABASE 以每个文件为单位对数据文件进行收缩。然而,DBCC SHRINKDATABASE 在对日志文件进行收缩时,它将视为所有的日志文件都存在于一个连续的日志池中。文件始终从末尾开始收缩。假设名为 mydb 的数据库有一个数据文件和两个日志文件。数据文件和日志文件分

6、别是 10 MB,并且数据文件包含 6 MB 数据。Microsoft SQL Server 2005 数据库引擎对每个文件计算一个目标大小。这就是文件将要收缩到的大小。将 target_percent 与 DBCC SHRINKDATABASE 一起指定时,数据库引擎计算的目标大小是收缩后文件中的 target_percent 可用空间大小。例如,如果在收缩 mydb 时将 target_percent 指定为 25,则数据库引擎将此文件的目标大小计算为 8 MB(6 MB 数据加上 2 MB 可用空间)。因此,数据库引擎将任何数据从数据文件的后 2 MB 中移动到数据文件前 8 MB 的可

7、用空间中,然后对该文件进行收缩。假设 mydb 的数据文件包含 7 MB 的数据。将 target_percent 指定为 30,以允许将此数据文件收缩到可用空间为 30。但是,将 target_percent 指定为 40 却不会收缩数据文件,因为数据库引擎收缩文件的目标大小不能小于数据当前占用空间大小。您还可以用另一种方法来考虑此问题:所要求的 40 可用空间加上整个数据文件大小的 70(10 MB 中的 7 MB),超过了 100。因为所要求的可用百分比加上数据文件占用的当前百分比大于 100%(多出 10%),所以任何大于 30 的 target_size 都不会收缩此数据文件。对于日

8、志文件,数据库引擎使用 target_percent 来计算整个日志的目标大小;因此,target_percent 是收缩操作后日志中的可用空间大小。之后,整个日志的目标大小转换为每个日志文件的目标大小。DBCC SHRINKDATABASE 尝试立即将每个物理日志文件收缩到其目标大小。如果虚拟日志中的所有逻辑日志部分都没有超出日志文件的目标大小,则该文件将成功截断,DBCC SHRINKDATABASE 完成且不显示任何消息。但是,如果部分逻辑日志位于超出目标大小的虚拟日志中,则数据库引擎将释放尽可能多的空间,并发出一条信息性消息。该消息说明需要执行哪些操作来将逻辑日志移出位于文件末尾的虚拟

9、日志。执行该操作以后,DBCC SHRINKDATABASE 可用于释放剩余空间。有关详细信息,请参阅收缩事务日志。因为日志文件只能收缩到虚拟日志文件边界,所以不可能将日志文件收缩到比虚拟日志文件更小(即使现在没有使用该文件)。虚拟日志文件的大小在创建或扩展这些日志文件时由数据库引擎动态选择。有关虚拟日志文件的详细信息,请参阅事务日志物理体系结构。权限 要求具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。、示例 A. 收缩数据库并指定可用空间的百分比以下示例将减小 UserDB 用户数据库中数据文件和日志文件的大小,以便在数据库中留出 10% 的可用空间。

10、 DBCC SHRINKDATABASE (UserDB, 10);GOB. 截断数据库以下示例使 AdventureWorks 示例数据库中的数据文件收缩到最后分配的区。DBCC SHRINKDATABASE (AdventureWorks, TRUNCATEONLY);请参考:ms190488(SQL.90).aspx2、DBCC SHRINKFILE (Transact-SQL)收缩当前数据库的指定数据或日志文件的大小,或通过将数据从指定的文件移动到相同文件组中的其他文件来清空文件,以允许从数据库中删除该文件。文件大小可以收缩到比创建该文件时所指定的大小更小。这样会将最小文件大小重置为新

11、值。 语法 DBCC SHRINKFILE ( file_name | file_id , EMPTYFILE | , target_size , NOTRUNCATE | TRUNCATEONLY ) WITH NO_INFOMSGS 参数 file_name 要收缩的文件的逻辑名称。file_id 要收缩的文件的标识 (ID) 号。若要获得文件 ID,请使用 FILE_IDEX 系统函数,或查询当前数据库中的 sys.database_files 目录视图。target_size 用兆字节表示的文件大小(用整数表示)。如果未指定,则 DBCC SHRINKFILE 将文件大小减少到默认文件

12、大小。默认大小是创建文件时指定的大小,或者是使用 ALTER DATABASE 所设置的最后大小。 如果指定了 target_size,则 DBCC SHRINKFILE 尝试将文件收缩到指定大小。将要释放的文件部分中的已使用页重新定位到保留的文件部分中的可用空间。例如,如果数据文件为 10 MB,则 target_size 为 8 的 DBCC SHRINKFILE 操作会将文件最后 2 MB 中所有的已使用页重新分配到文件前 8 MB 中的任何未分配页中。DBCC SHRINKFILE 不会将文件收缩到小于存储文件中的数据所需要的大小。例如,如果使用 10 MB 数据文件中的 7 MB,则

13、带有 target_size 为 6 的 DBCC SHRINKFILE 语句只能将该文件收缩到 7 MB,而不能收缩到 6 MB。EMPTYFILE 将指定文件中的所有数据迁移到同一文件组中的其他文件。由于数据库引擎不再允许将数据放在空文件内,因此可以使用 ALTER DATABASE 语句来删除该文件。NOTRUNCATE 在指定或不指定 target_percent 的情况下,将已分配的页从数据文件的末尾移动到该文件前面的未分配页。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,文件看起来未收缩。 NOTRUNCATE 只适用于数据文

14、件。日志文件不受影响。TRUNCATEONLY 将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最后分配的区。 如果随 TRUNCATEONLY 指定了 target_size,则会忽略该参数。 TRUNCATEONLY 只适用于数据文件。WITH NO_INFOMSGS 取消显示所有信息性消息。收缩日志文件对于日志文件,SQL Server 2005 数据库引擎使用 target_size 来计算整个日志的目标大小;因此,target_size 是收缩操作后日志中的可用空间大小。之后,整个日志的目标大小转换为每个日志文件的目标大小。DBCC SHRINK

15、FILE 尝试立即将每个物理日志文件收缩到其目标大小。但是,如果部分逻辑日志位于超出目标大小的虚拟日志中,则数据库引擎将释放尽可能多的空间,并发出一条信息性消息。该消息说明需要执行哪些操作来将逻辑日志移出位于文件末尾的虚拟日志。执行这些操作以后,DBCC SHRINKFILE 可用于释放剩余空间。如果文件不收缩如果收缩操作运行时未出现错误,但文件大小看起来没有发生更改,则请执行下列操作之一以验证文件是否有足够的可用空间可供删除:运行以下查询。SELECT name ,size/128.0 - CAST(FILEPROPERTY(name, SpaceUsed) AS int)/128.0 AS AvailableSpaceInMBFROM sys.database_files;权限 要

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号