Sql server SQL Server中sys架构对象的可见性

Sql server SQL Server中sys架构对象的可见性,sql-server,Sql Server,在SSMS中,与Windows身份验证连接,并且是分配给SQL实例SA的AD组的成员 给定两个不同的数据库 如果我连接到DATABASE1并对sys.columns运行两个包含3个部分的对象名的查询,例如 Select count(*) from DATABASE1.sys.columns where object_name(object_id) = 'MYTABLE' and name='MYCOLUMN' Select count(*) from DATABASE2.sys.columns

在SSMS中,与Windows身份验证连接,并且是分配给SQL实例SA的AD组的成员

给定两个不同的数据库

如果我连接到DATABASE1并对sys.columns运行两个包含3个部分的对象名的查询,例如

Select count(*) from DATABASE1.sys.columns where object_name(object_id) = 'MYTABLE' and name='MYCOLUMN'
Select count(*) from DATABASE2.sys.columns where object_name(object_id) = 'MYTABLE' and name='MYCOLUMN'
我看到两个数据库的结果集

如果我连接到DATABASE2并运行相同的查询,我只会看到DATABASE2中的结果集


作为系统管理员连接到DATABASE2时,什么权限阻止我查看DATABASE1.sys.columns?

这可能与权限无关,但与
OBJECT\u NAME()
解析当前数据库的本地ID有关。改为在(qualified!)
sys.objects
上进行适当的连接。就是这样,duhh。。。谢谢
Select count(*) from DATABASE1.sys.columns where object_name(object_id, db_id('DATABASE1')) = 'MYTABLE' and name='MYCOLUMN'
Select count(*) from DATABASE2.sys.columns where object_name(object_id, db_id('DATABASE2')) = 'MYTABLE' and name='MYCOLUMN'