专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sqlserver2005:如何在 SQL Server 2005 中使用 DBCC SHRINK »正文

sqlserver2005:如何在 SQL Server 2005 中使用 DBCC SHRINK

来源: 发布时间:星期三, 2008年12月17日 浏览:40次 评论:0
介绍
在 Microsoft SQL Server 2005 中您可以收缩数据库中事务日志文件以删除未使用页面数据库引擎将有效地重新使用空间但是当事务日志文件意外增长时可能必须要手动收缩事务日志文件

本文介绍如何在 SQL Server 2005 数据库中在完整恢复模式下使用 DBCC SHRINKFILE 语句手动收缩事务日志文件您在 SQL Server 2005 中用于收缩事务日志文件思路方法可能和在 SQL Server 2000 中用于收缩事务日志文件思路方法有所区别 有关如何在 SQL Server 2000 中收缩事务日志文件更多信息请单击下面文章编号以查看 Microsoft 知识库中相应文章:
272318 (http://support.microsoft.com/kb/272318/) INF:使用 DBCC SHRINKFILE 收缩 SQL Server 2000 中事务日志
回到顶端

更多信息
在 SQL Server 2005 中收缩操作 (DBCC SHRINKFILE) 会立即尝试将指定事务日志文件收缩为要求大小要在完整恢复模式下手动收缩事务日志文件请首先备份事务日志文件然后使用 DBCC SHRINKFILE 语句收缩该事务日志文件

通常在 SQL Server 2005 中收缩事务日志文件比在 SQL Server 2000 中收缩事务日志文件要快原因是 SQL Server 2005 日志管理器会根据物理磁盘存储顺序创建或重新使用非活动虚拟日志文件因此事务日志文件非活动部分通常位于文件末尾

例如事务日志文件可能包含 100 个虚拟日志文件但仅使用 2 个虚拟日志文件SQL Server 2000 会将使用个虚拟日志文件存储在事务日志文件开头将使用第 2个虚拟日志文件存储在事务日志文件中间为了将事务日志文件仅收缩为 2 个虚拟日志文件SQL Server 将使用虚拟日志项填充第 2个虚拟日志文件剩余部分SQL Server 会将逻辑日志开头移到日志管理器指定个可用虚拟日志文件中日志管理器可能会在事务日志文件中间、上个活动虚拟日志文件的前创建个虚拟日志文件在这种情况下必须使用多个日志备份操作和多个收缩操作才能成功地将事务日志文件收缩为 2 个虚拟日志文件最糟糕情况是您可能必须使用 50 个日志备份操作和 50 个收缩操作才能成功地将事务日志文件收缩为 2 个虚拟日志文件

不过在 SQL Server 2005 中您执行个 DBCC SHRINKFILE 语句就可以立即将事务日志文件收缩为 2 个虚拟日志文件这是 SQL Server 2005 日志管理器按照物理磁盘存储顺序创建了 2 个虚拟日志文件这两个虚拟日志文件都位于事务日志文件开头

当您尝试在 SQL Server 2005 中收缩可用空间很小事务日志文件时必须执行另个日志备份操作这个附加日志备份操作会将事务日志文件截断为较小大小在 SQL Server 2000 中收缩事务日志文件时除了要执行上述 3个步骤外还要执行此日志备份操作有关更多信息请参阅“介绍”节提到 Microsoft 知识库文章要在 SQL Server 2005 中收缩可用空间很小事务日志文件请按照下列步骤操作:1. 备份事务日志文件以使大多数活动虚拟日志文件处于非活动状态因此可在以后步骤中删除非活动虚拟日志文件为此请运行和以下 Transact-SQL 语句相似 Transact-SQL 语句BACKUP LOG <DatabaseName> TO DISK = '<BackupFile>'
注意:在此语句中<DatabaseName> 是要备份数据库名称占位符在此语句中<BackupFile> 是备份文件完整路径占位符

例如运行以下 Transact-SQL 语句BACKUP LOG TestDB TO DISK='C:\TestDB1.bak'

2. 收缩事务日志文件为此请运行和以下 Transact-SQL 语句相似 Transact-SQL 语句DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS
注意:在此语句中<FileName> 是事务日志文件名称占位符在此语句中<TargetSize> 是事务日志文件目标大小占位符目标大小必须合理例如您不能将事务日志文件收缩为小于 2 个虚拟日志文件大小
3. 如果 DBCC SHRINKFILE 语句未将事务日志文件收缩为目标大小则运行步骤 1 中提到 BACKUP LOG 语句以使更多虚拟日志文件处于非活动状态
4. 运行步骤 2 中提到 DBCC SHRINKFILE 语句执行此操作后事务日志文件就应接近目标大小了
总而言的在 SQL Server 2005 中更改了日志管理器用于选取下个虚拟日志文件算法因此在 SQL Server 2005 中收缩事务日志文件和在 SQL Server 2000 中收缩事务日志文件区别具体表现在: • 如果日志文件具有大量可用空间在 SQL Server 2005 中收缩事务日志文件比在 SQL Server 2000 中收缩事务日志文件要快
• 如果日志文件没有可用空间在 SQL Server 2005 中收缩事务日志文件和在 SQL Server 2000 中收缩事务日志文件相同
• 如果日志文件可用空间很小在 SQL Server 2005 中收缩事务日志文件要比在 SQL Server 2000 中执行此操作时多执行个日志备份操作

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: