重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在程序组中,展开“Sqlserver”运行“查询分析器”。输入用户名、密码。
目前创新互联建站已为上千家的企业提供了网站建设、域名、网站空间、网站托管维护、企业网站设计、庄河网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
在工具栏的数据库列表中选择要操作的数据库。
输入:select * from sysfiles 执行,可以看到下面的内容,记住其中的fileid字段的内容,也就是1或2,标识数据库的数据文件或日志文件,下面的命令要用到这里的值。
输入:dbcc shrinkdatabase(' 库名' ),收缩数据库,结果如下:可以看到压缩后的数据库文件的尺寸。
输入:dbcc shrinkfile(2, 0)执行,然后输入dbcc shrinkfile(1, 0)执行。两句命令中的第一个参数就是前面看到的FileID的值,表示了一个是日志文件,一个是数据文件。第二个参数0,表示收缩到初始大小。
输入:dbcc updateusage (0),执行更新操作,完工!更新后可以跟之前的数据文件比对一下了,会有相对较大的尺寸上的优化了。
压缩数据文件最大的好处就是节约磁盘空间。这个东西对于中小型数据库而言,意义可能体现的并不明显,但是如果放在大型或者超大型数据库上,那么价值就非常可观了。
例如某大型数据库,备份文件在没有压缩前,大小可能在500G左右,压缩后大小大约在70G左右,可节约430G,而一个大型的IT企业,这种数据库还并不是核心库,核心库会更大,并且还会伴随多种高可用技术(更多的冗余)。例如腾讯或者阿里巴巴或者百度,那么多的业务,全国各地总服务器加起来可能上百台甚至上千台,按300台DB Server计算,如果单台能节省430G存储,300台Server可以节约125TB的存储,这是非常可观的一笔开销。
具体方法有3种。
方法一:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--
no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。
第二步:
1.收缩特定数据库的所有数据和日志文件,执行:
dbcc
shrinkdatabase
(database_name,[,target_percent])
--
database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。
2.收缩一次一个特定数据库中的数据或日志文件,执行
dbcc
shrinkfile(file_id,[,target_size])
--
file_id是要收缩的文件的标识
(id)
号,若要获得文件
id,请使用
file_id
函数或在当前数据库中搜索
sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc
shrinkfile
将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具体意思查看联机帮助.
方法二:
第一步:
先备份整个数据库以备不测
。
第二步:
备份结束后,在query
analyzer中执行如下的语句:
exec
sp_detach_db
yourdbname,true
--卸除这个db在mssql中的注册信息
第三步:
到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录
第四步:
在query
analyzer中执行如下的语句:
exec
sp_attach_single_file_db
yourdbname,'
d:\mssql\data\yourdbname_data.mdf
'
--以单文件的方式注册该db,如果成功则mssql将自动为这个db生成一个500k的日志文件。
方法三:
1.
进入企业管理器,选中数据库,比如demo
2.
所有任务-分离数据库
3.
到数据库文件的存放目录,将muonline_log.ldf文件删除,以防万一,你可以拷出去
4.
企业管理器-附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧,继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
5.
记得数据库重新附加后用户要重新设置一下。
如果以后,不想要它变大:
sql2000下使用:
在数据库上点右键-属性-选项-故障恢复-模型-选择-简单模型。
或用sql语句:
alter
database
数据库名
set
recovery
simple