免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3502 | 回复: 12
打印 上一主题 下一主题

資料庫的大小及筆數如何統計 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-08 11:07 |只看该作者 |倒序浏览
我想知道一個db有多少筆資料及總的大小,有沒有好的存儲過程可以計算呢  是不是要查出每個表然後相加呢  請大家幫忙出個注意
謝謝!

论坛徽章:
0
2 [报告]
发表于 2005-07-08 13:30 |只看该作者

你需要的信息是沒有什麼意義的

DB的大小可以通過文件屬性得到字節數.
你想知道一個DB有多少筆資料對你很有用嗎, 有的記錄字段很多, 有的記錄字段很少, 請問你以什麼樣的標準來衡量呢, 每個 TABLE 的結構都不同, 而且存儲的數據也不一樣, 怎麼可以相加呢,即使加出來也只是數量.
你可以使用 sysobjects 系統表查出所有的用戶表 [xtype] = \'U\' , 然後每個表執行一下, 如下面的語句:

create table [#temp]([CNT] numeric(20))
insert [#temp] values(0)

declare @name sysname,@s nvarchar(1000)

declare [cursor_test] cursor for select [name] from sysobjects where [xtype]=\'U\' order by [name]
open [cursor_test]
fetch next from [cursor_test] into @name
while @@fetch_status<>-1
        begin
                select @s=\'declare @cnt int\'
                select @s=@s+char(13)+char(10)+\'select @cnt=0\'
                select @s=@s+char(13)+char(10)+\'select @cnt=count(*) from [\'+ltrim(rtrim(@name))+\']\'
                select @s=@s+char(13)+char(10)+\'select @cnt=isnull(@cnt,0)\'
                select @s=@s+char(13)+char(10)+\'update [#temp] set [CNT]=[CNT]+@cnt\'
                exec (@s)
                fetch next from [cursor_test] into @name
        end
close [cursor_test]
deallocate [cursor_test]

论坛徽章:
0
3 [报告]
发表于 2005-07-08 13:44 |只看该作者
我們;老闆需要這樣的東西  要求每個月資料庫的變化情況,包括增長率,筆數,大小,自己沒有決定權阿

论坛徽章:
0
4 [报告]
发表于 2005-07-08 13:50 |只看该作者
怎麼沒有人會大阿  高手門難道都去研究oracle了

论坛徽章:
0
5 [报告]
发表于 2005-07-08 13:52 |只看该作者
自己研究吧  看來沒有能回答

论坛徽章:
0
6 [报告]
发表于 2005-07-08 14:53 |只看该作者
不知道你到底要的是甚麼的變化,是數據褲的嗎,還有日誌的

论坛徽章:
0
7 [报告]
发表于 2005-07-08 14:59 |只看该作者
其實這個是每天都在變化的,只要你操作了就會發生變化,sysfiles,spt_values都在這幾個表中,你自己可以通過sp_help查看的,寫個儲存過程查看

论坛徽章:
0
8 [报告]
发表于 2005-07-08 15:03 |只看该作者

這段程序對你有沒有什麼幫助

create table [#temp]([CNT] numeric(20))
insert [#temp] values(0)

declare @name sysname,@s nvarchar(1000)

declare [cursor_test] cursor for select [name] from sysobjects where [xtype]=\'U\' order by [name]
open [cursor_test]
fetch next from [cursor_test] into @name
while @@fetch_status<>-1
begin
select @s=\'declare @cnt int\'
select @s=@s+char(13)+char(10)+\'select @cnt=0\'
select @s=@s+char(13)+char(10)+\'select @cnt=count(*) from [\'+ltrim(rtrim(@name))+\']\'
select @s=@s+char(13)+char(10)+\'select @cnt=isnull(@cnt,0)\'
select @s=@s+char(13)+char(10)+\'update [#temp] set [CNT]=[CNT]+@cnt\'
exec (@s)
fetch next from [cursor_test] into @name
end
close [cursor_test]
deallocate [cursor_test]

论坛徽章:
0
9 [报告]
发表于 2005-07-08 16:03 |只看该作者
樓上兄弟的的出的結果我認為沒甚麼意義阿,

论坛徽章:
0
10 [报告]
发表于 2005-07-08 16:11 |只看该作者
你的結果就是所有數量的和是吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP