Что такое настоящий sys.all_objects? - PullRequest
0 голосов
/ 31 октября 2018

Я работаю с SQL Server 2008 R2 и SQL Server 2016.

У меня есть куча User-Defined Data Types, но они не отображаются в sys.all_objects. Что такое истинное представление каталога, которое может возвращать все определенные пользователем объекты?

Спасибо

1 Ответ

0 голосов
/ 31 октября 2018

Типы не являются объектами, которые будут отображаться в таблице объектов. Вы можете использовать таблицу типов:

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  
...