急:sql server 2008 视图或者存储过程相关问题?

13abyKnight 2013-03-23 10:43:18
各位大虾好:

小编我此时此刻真的很高兴,我已经将近3年没有登陆过CSDN啦,今有兴在此登陆CSDN让我非常激动和澎湃。。

问题:有视图的方式查询sql server 2008 所用的数据库中的所用表中的数据信息。。。

疑问:一个数据库中只有一张表,反之,50个数据库对应50个表,它们字段类型与字段长度都一样。

请问,这样的视图应该如何完成呢?


如果是ORACLE的话我直接2次循环一次赋值就可以。

但是,sql server 2008 第一次玩 请大家帮助。

视图或者存储完成都可以。。

给一个列子也可以。。

感谢 各位的帮助。

思路:

1,创建一个数据库
2,创建一个视图
3,在着个视图中根据时间戳查找当天的所创建的数据库,根据时间戳可知当天所创建的数据库,根据数据库的名称可获得数据库中的所有的表(只有一张表。),如此的循环的话多个数据库UNION ALL 就可以呢!!!!
但是,在此不知道该怎么写了。

思路有,写没有了。

请教大虾提供怎么写.
...全文
254 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
13abyKnight 2013-03-26
  • 打赏
  • 举报
回复
呵呵,我也是闲的无聊要死吧!! 公司的网络人员闲的蛋痛吧!!! MLGB,要统计全国子公司与股份、总部所有人的每天上班时间流量数据信息. 所以,每天都有新建的数据库,数据量当然很大呢!! 说不好听的话,你在上网我都知道你看的是什么网页,相当变态啦! 小编我看完数据以后立马把我看的网页信息删掉啦!
13abyKnight 2013-03-25
  • 打赏
  • 举报
回复
---------------创建表记录表记录 create table tableRecord ( tableName varchar(50) not null, countRecord int null, identRecord int null ) --select data.name 数据库名称 from [sysdatabases] data where Convert(varchar(100),crdate,23)=CONVERT(varchar(90), GETDATE(), 23) order by [name]; --可根据crdate日期来判断是否最新数据库. --这是动态读取数据库名称,根据数据库名称获取当前用户表名 create procedure getTableRecord(@databaseName varchar(50)) as set nocount on declare @sql varchar(8000) declare @getrecordSql varchar(8000) declare @tableName varchar(80) delete from tableRecord --这段就是获取用户的所需的表名 set @sql = 'declare tableRecord1 cursor for select name from '+@databaseName+'.dbo.sysobjects where xtype = ''U''' exec (@sql) open tableRecord1 fetch next from tableRecord1 into @tableName while(@@fetch_status=0) begin --进行统计存储 set @getrecordSql ='select '''+@tableName+'''as ''表名'' ,count(*) as ''表记录总数'' ,ident_current('''+@databaseName+'.dbo.'+@tableName+''') as ''最大标识符'' from '+@databaseName+'.dbo.'+@tableName insert into tableRecord exec (@getrecordSql) fetch next from tableRecord1 into @tableName end close tableRecord1 deallocate tableRecord1 select * from tableRecord go
13abyKnight 2013-03-25
  • 打赏
  • 举报
回复
呵呵,你理解错啦!! 每天下班之前进行统计的时都会有当天的新的数据库呢! 你完全理解错误了。
七不语v 2013-03-25
  • 打赏
  • 举报
回复
如果库名是有规律的话,生成库名.dbo.表名 ,卓个统计啊??
hgwyl 2013-03-25
  • 打赏
  • 举报
回复
1、如果我没有理解错的话,似乎很大型……一天一个库…… 2013-03-25库,2013-03-26库…… 这类的不懂,好高端……留名学习…… 2、如果我理解正确,感觉你的思路有问题吧? 干嘛需要那么多库?难道分表不够么……? record20130325表、record20130326表、record20130327表 这样的话有规律的名称在查找时,指定表名也容易多了。
wyx2000z 2013-03-25
  • 打赏
  • 举报
回复
一个库中你可以用 select * from db1..table1 多个你可以用union, 放在动态SQL里 declare @s nvarchar(4000) select @s=' select * from db1..table1 union all select * from db2..table1 union all select * from db3..table1 ... ' execute sp_executesql @s 你只要生成这个@s 命令字符串就行了

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧