我知道数据库对象的层次关系式 (服务器.数据库.架构.对象名)
但是我发现有些系统视图,比如sys.sysobjects,几乎每个数据库都有这个系统视图,
但是我执行
select * from master.sys.sysobjects where name='sysobjects'
有结果
执行
select * from 用户数据库.sys.sysobjects where name='sysobjects'
但是我用SQL SERVER MANAGE STUDIO L里在用户数据的系统视图里用明明就看到有这sys.sysobjects个视图
想知道为什么会没有
问题二:我发现自定义的表值函数是对象,想知道哪些系统函数是不是对象
问题三,按我的理解,(服务器.数据库.架构.对象名)就像一个树形目录,哪怕同样是sys.sysobjects,只要前边的数据库不一样,如下
master.sys.sysobjects
test.sys.sysobjects
那么这也是两个不同的东西,不知道我的理解对不对
------解决方案--------------------
1、我是这样理解的,所谓系统视图实际上一直都在master库中,在单独的用户数据库中,是对应master视图的映射而已。就像系统视图对应系统表的映射。所以,使用 用户数据库.sys.objects 是无法获取到master库中信息的。
2、不是太明白lz说的对象的含义。实际上对象可大可小,如何划分,完全可以视情况而定。lz所说对象是指?
3、可以这样理解的。
------解决方案--------------------
sys.sysobjects是兼容性视图,实际上是存储在Resource DB里面。