MSSql2008截断日志和收缩日志

sql 2008 不支持 BACKUP LOG WITH NO_LOG 和 BACKUP LOG WITH TRUNCATE_ONLY

SQL code--如果要截断日志收缩文件,可以这样:

DECLARE @I INT SET @I=1
WHILE @I<3
BEGIN
    BACKUP LOG [库名] TO  DISK = N'c:\log.bak' 
    DBCC SHRINKDATABASE('库名')
    SET @I=@I+1
END


--或收缩指定日志文件:

DECLARE @I INT SET @I=1
WHILE @I<3
BEGIN
    BACKUP LOG [库名] TO  DISK = N'c:\log.bak' 
    DBCC SHRINKFILE(日志文件的文件名即可,不带路径和扩展名)
    SET @I=@I+1
END

### 关于数据库收缩的操作方法 在 SQL Server 中,数据库的收缩操作可以通过手动方式完成,但需要注意的是,不能将整个数据库收缩到比其初始大小更小的状态[^1]。例如,如果一个数据库最初创建时大小为 10 MB,随后扩展到了 100 MB,在清空所有数据的情况下,它也只能被收缩至最初的 10 MB 大小。 #### 手动收缩数据库的方法 可以使用 `DBCC SHRINKDATABASE` 或 `DBCC SHRINKFILE` 命令来实现数据库及其日志文件的手动收缩。以下是具体命令示例: ```sql -- 收缩整个数据库 DBCC SHRINKDATABASE ('DatabaseName', TargetPercent); -- 收缩特定的数据文件或日志文件 DBCC SHRINKFILE (LogicalFileName, TargetSize); ``` 其中: - `'DatabaseName'` 是目标数据库名称; - `TargetPercent` 表示希望达到的目标百分比填充率; - `LogicalFileName` 是逻辑文件名(可通过查询 `sys.master_files` 获取); - `TargetSize` 单位为 MB,表示期望的最终文件大小。 注意:这些操作不会影响正在运行的备份过程,也无法在执行备份的同时进行收缩。 #### 自动收缩功能的风险与建议禁用 SQL Server 提供了一种称为 **自动收缩** 的机制,允许系统定期尝试释放未使用的空间。然而,这种行为通常被认为是有害的,因为它可能导致频繁的碎片化以及性能下降。因此,强烈推荐关闭此选项并仅按需手工处理收缩任务。 对于 SQL Server 2000 用户而言,除了面对常规意义上的数据库膨胀外,还特别容易遭遇因事务日志持续增长而引发的空间管理难题[^2]。当发现日志文件占据远超预期的实际物理尺寸时(比如从原本只有几百 KB 的规模激增至上百兆字节),应考虑采取如下措施予以缓解: 1. 截断无意义的历史记录部分; 2. 调整恢复模式以减少不必要的保留周期长度; 3. 如果确实有必要缩小现有容量,则先通过 CHECKPOINT BACKUP LOG WITH TRUNCATE_ONLY 来清理内部状态后再实施缩减动作。(请注意后者已被现代版本废弃) 另外值得注意的一点在于 MySQL 平台下的情况有所不同——尽管也存在类似的资源利用率考量因素,但由于架构设计上的差异使得 MyISAM 类型表具备一定的特殊能力去应对某些极端情形下产生的冗余开销问题[^3]。不过总体来说还是应当尽量避免让任何单一组件长期维持过高的负载水平以免拖累整体效率表现。 --- ### 数据库优化中的注意事项 针对 InnoDB 存储引擎,默认情况下启用了共享表空间配置方案 (`innodb_file_per_table=off`) ,这意味着所有的用户对象都会被打包存入同一个全局性的 ibdata 文件集合之中 。虽然这样做的好处是可以简化维护流程并且便于跨平台迁移等工作环节,但是同时也带来了难以灵活调整单个表格所对应磁盘映像体积这一局限性特点 [^3]。所以假如项目中有较多动态变化需求的话最好切换成基于每张表单独分配专属区域的新模式(`innodb_file_per_table=on`)以便更好地掌控各自的增长趋势从而及时作出相应对策防止浪费过多宝贵硬件资产份额。 最后提醒一点就是无论采用哪种策略都务必记得做好充分的事前规划工作包括但不限于预估未来几年内的业务发展速度预测相应的存储扩容计划等等这样才能有效规避潜在风险保障系统的稳定可靠运转! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值