读书人

500G怎份?该如何解决

发布时间: 2012-01-14 20:02:35 作者: rapoo

500G怎份?
500G怎份?份之前要做化?具怎做?有方面的前指一下!

[解决办法]
如果没有备份文件,日志是用来还原数据的,
有备份文件的话,清空日志文件没有影响.
可以先清空再收缩数据库
backup log 数据库 with no_log
dbcc shrinkdatabase( '数据库 ',0,notruncate)
如果备份还嫌大就删掉一些大表的历史记录吧.
[解决办法]
大 的份成本很高,我把中的表的史、有用的清空
再行份

否份的太,份的成本也很高



[解决办法]
你是要备份还是要缩小数据库?

备份只需要找个大的存储介质,TB容量的也很多.

如果想缩小数据库可从几个方面:
1\缩小日志文件,上面都讲过了
2\减小数据表的UNUSED SIZE,可用SQL语句查询出数据库所有表的记录数量以及占用空间情况.
参考:
--==========================================================================
-- 说明: 本脚本用于查询当前数据库中任何表格的记录条数
-- 并将结果存入tableinfo表中,不会删除以备用户再做处理和分析
-- 但是,最后请用户删除此表。
--==========================================================================

if exists (select * from dbo.sysobjects where id = object_id([dbo].[tablespace]) and objectproperty(id, nisusertable) = 1)
drop table [dbo].[tablespace]
go

create table tablespace
(
tablename varchar(20),
rowscount char(11),
reserved varchar(18),
data varchar(18),
index_size varchar(18),
unused varchar(18)
)
go

declare @sql varchar(500)
declare @tablename varchar(20)

declare cursor1 cursor

for
select name from sysobjects where xtype='U'

open Cursor1
fetch next from Cursor1 into @TableName

while @@fetch_status = 0
begin
set @sql = 'insert into TableSpace '
set @sql = @sql + ' exec sp_spaceused '''+ @TableName + ''' '
exec (@sql)
fetch next from Cursor1 into @TableName
end
close Cursor1
deallocate Cursor1
go

--显示结果
select * from tablespace
--order by tablename
--order by tablename asc --按表名称,用于统计表
order by rowscount desc --按行数量,用于查看表行数
--order by reserved desc, data desc --按占用空间
--order by index_size desc, reserved desc --按索引空间查看
go

drop table TableSpace

读书人网 >SQL Server

热点推荐