一次SQLSERVER数据库瘦身过程

本文介绍了如何对SQL Server数据库进行瘦身操作,特别是针对含有大量备份数据的表。通过新建数据库,转移备份表并使用DBCC SHRINKFILE命令清空日志,最终实现数据库的瘦身。在操作过程中,避免了将数据导出为TXT格式导致的问题。
摘要由CSDN通过智能技术生成

今天接到一个任务,给一台SQLSERVER数据库瘦身,数据库装在F盘,F盘总容量170G,SQLSERVER,占了156G。还剩14个G左右。主要问题是有个数据库例如叫DataBase1吧,有一个表的很多备份文件,按月备份的。例如dbo.表1_bak_200801,dbo.表1_bak_200802等,每个备份表里的数据大概都在1500W-到2500W之间。经理要求是:把这些数据弄下来,刻成盘,数据瘦身!

 

自己写了个程序,测试到以下数据:

1每个表中记录数为1500W-2500W之间

2每个表中主要有varchar,int,datetime

3每150W条数据约占600MB空间

 

最初方案:将每个表倒成TXT,然后将TXT拿下来,收缩数据库。但是这种方案很快就被否决了,原因是表中有个字段是Content,里面包括汉字,各种标点符号。如果倒成TXT的话,假设Content里包含回车符或者换行符就很麻烦!所以轻易不要倒成TXT!

最终方案:在数据库上新建一个库,库名就是那些备份表的名字,然后通过数据库间的数据导出,将备份表导入到另一库中,然后用以下代码清空日志,因为,导入数据也相当于INSERT操作,会产生大容量的日志文件:

---Sql Server 2008 使用 DBCC SHRINKFILE (日志文件名,10) 来清空日志
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT


USE RT_SMS -- 要操作的数据库名
SELEC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值