SQL SERVER 2000 数据库查询

悬赏:5 发布时间:2008-07-25 提问人:weidewei (初级程序员)

在程序中我现在想通过配置有访问master权限的用户sa和密码password,

然后从master sysdatabases表中得到的数据库名去查询其他库的表.

比如:我现在从sysdatabases中得到test1,test2两个库,我想查询test1中的user表,查询语句该怎么写?

我这样写select ID from test1.username.user;是可以的.但是这里有个username是的登陆SQL SERVER的用户名并且有访问test1的权限.
而select ID from test1.sa.user;这样写就报错:对象名 'test1.sa.user'无效。

如果我在程序中把配置用户改为username这用户,select ID test1.username.user;是可以的.
而select ID test1.sa.user;就报错:对象名 'test1.sa.user'无效.

我现在发现的现象就是这样. 问题是:如果我在一个方法中想同时访问test1,test2两个库的数据,并且两个库的访问权限不同.我该怎么写sql;sql里的那个用户名该怎么弄,其实sa是有访问所有数据库权限的,但是写成select ID from test1.sa.user;这样写还是会报错.怎么原因?有什么解决方案?网上搜好多人都说在表前加dbo.,我这样写还是不行(select ID from test1.dbo.user;) why?
该问题已经关闭: 已经找到原因.表所有者问题.表的所有者为dbo的时候是不需要加所有者名的.为其他就必须带上所有者名,如果这里的表所有者为username,所以加库名查询时必须加上username才可以.