什么是真正的 sys.all_objects?

Posted

技术标签:

【中文标题】什么是真正的 sys.all_objects?【英文标题】:What is the true sys.all_objects? 【发布时间】:2018-10-31 16:08:43 【问题描述】:

我正在与SQL Server 2008 R2SQL Server 2016 合作。

我有一堆User-Defined Data Types,但它们没有显示在sys.all_objects 中。什么才是真正可以返回所有用户自定义对象的目录视图?

谢谢

【问题讨论】:

类型不是对象。您可以在 sys.types 中找到它们 同意,但我正在编写一个查询,我必须将它们视为一个用于连接目的 在这种情况下,您必须更改查询,因为它们不是对象。您无法从 sys.objects 检索它们。他们没有 OBJECT_ID。更改查询并查询正确的表 How do I list user defined types in a SQL Server database?的可能重复 【参考方案1】:

类型不是会显示在对象表中的对象。您可以使用类型表:

select * 
from sys.types
WHERE is_user_defined = 1

或者您可以使用来自MS docs 的更大查询来返回您的所有对象、类型和架构集合:

SELECT 'OBJECT' AS entity_type  
    ,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name  
    ,name   
FROM sys.objects 
UNION   
SELECT 'TYPE' AS entity_type  
    ,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name  
    ,name   
FROM sys.types   
UNION  
SELECT 'XML SCHEMA COLLECTION' AS entity_type   
    ,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name  
    ,xsc.name   
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s  
    ON s.schema_id = xsc.schema_id  

GO  

【讨论】:

以上是关于什么是真正的 sys.all_objects?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 查询某张表对应依赖的视图存储过程函数

obs直播软件怎么开发?

什么是华为云对象存储OBS?它有什么优势?

obs软件直播电影怎么实时显示时长和片长

obs*R-squared是啥意思

如何在不知道其表的情况下删除约束?