欢迎光临

木子屋

标题: SQL Server2000删除日志释放磁盘空间

作者: dnawo

日期: 2010-05-20 01:16 PM

分类: 服务器

内容: 在SQL Server2000中要删除日志释放磁盘空间得分两步进行：
·执行backup log语句来删除不活动日志，但此时磁盘空间并未释放；
·收缩数据库释放未使用的磁盘空间；
下边详细说明：
①.执行backup log语句删除不活动日志
执行sql语句：backup log Northwind with no_log，不活动日志将被删除，下图为sql语句执行前后数据库大小：
但在资源管理器中查看，你会发现剩余的磁盘空间并没有多出来，原因是日志删除了，但占用的空间未被释放，所以得再收缩下数据库来释放磁盘空间。
说明：这个步骤也有人是执行"dump transaction Northwind with no_log"，但SQL Server2000帮助文件中说dump transaction和backup log是同义的，保险起见这两句可都执行一下。
SQL Server2000帮助相关说明：
引用内容DUMP DATABASE 和 DUMP TRANSACTION 语句与 BACKUP DATABASE 和 BACKUP LOG 语句同义。在以后的版本中可能会取消对 DUMP DATABASE 和 DUMP TRANSACTION 语句的支持。
考虑删除所有对 DUMP DATABASE 的引用，并替换为对 BACKUP DATABASE 的引用。考虑删除所有对 DUMP TRANSACTION 的引用，并替换为对 BACKUP LOG 的引用。
②.收缩数据库释放未使用的磁盘空间
收缩数据库会删除每个文件中未使用的页，以释放出磁盘空间。右键单击数据库，选择"所有任务→收缩数据库"，点确定，你会看到剩余磁盘空间多了很多出来，数据库大小也变化了：
说明：第②步操作也可以通过执行sql语句"dbcc shrinkdatabase(Northwind,1) "来进行，但实际发现执行非常慢！后测试可使用dbcc shrinkfile(n)语句，速度快很多，n的值可执行'select * from sysfiles"来获取！
总结t-sql：
复制内容到剪贴板 程序代码/*第一步：查询出文件编号,修改@fileid值*/
select * from sysfiles
/*第二步：删除日志并释放空间*/
declare @table nvarchar(50),@fileid int
set @table = 'Northwind'
set @fileid = 2
dump transaction @table with no_log
backup log @table with no_log
dbcc shrinkfile(@fileid)

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.549 ms

返回

标题: SQL Server2000删除日志释放磁盘空间

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.549 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.580 ms

返回