本地有三个数据库D2010,D2011,D2012
三个库的库结构基本一样,只是其中存放的数据因年份不同而不同。
程序操作画面可以给查询操作限定时间,比方指定的时间是2011,SQL语句如何写?这种形式的数据库在读写时应该注意些什么?
三个库的库结构基本一样,只是其中存放的数据因年份不同而不同。
程序操作画面可以给查询操作限定时间,比方指定的时间是2011,SQL语句如何写?这种形式的数据库在读写时应该注意些什么?
1、如果3个库权限结构一致。
LZ可以考虑用动态拼接字符串的方式处理declare @i varchar(4)
declare @sql nvarchar(2000)set @sql ='select * from '+'D'+@i+'.dbo.tablename'
exec (@sql)2、用存储过程调用。写好判断即可。同样要注意权限设定。if @i = '2010'
select * from D2010.dbo.tablenameif @i = '2011'
select * from D2011.dbo.tablename
就可以了。同实例下的数据库,指定数据库名字只要权限分配了,可以不用切换数据库,直接操作即可。
这种方案的缺点是每个数据库都要查询,占用时间多一点方案2:你给出需查询时间,用这个时间去判断在哪个数据库中,也就是得到那个数据库名,然后再查询数据。
占用时间要看数据量的大小,如果数据量大的话时间和第一种方案错不了多少的。当然了这种办法是比较好的办法。你的数据表中有没有日期字段,如果有可以先建立一个总表。数据库名 表名 数据日期
db1 tb 2008
db1 tb 2009
db2 tb 2010
db2 tb 2011
db3 tb 2012这个可以根据你的表数据来建立就行了。下面再根据传进来的值去取数据不就行了吗,也很好取的。
再想省事的话,你的那个总表也可以是一个视图,以后就可以随便用了。希望楼主成功。