Что такое настоящий sys.all_objects?
Я работаю с SQL Server 2008 R2
а также SQL Server 2016
,
У меня есть куча User-Defined Data Types
но они не показывают в sys.all_objects
, Что такое истинное представление каталога, которое может возвращать все определенные пользователем объекты?
Спасибо
1 ответ
Решение
Типы не являются объектами, которые будут отображаться в таблице объектов. Вы можете использовать таблицу типов:
select *
from sys.types
WHERE is_user_defined = 1
или вы можете использовать этот больший запрос из документов MS, чтобы вернуть все ваши объекты, типы и коллекции схем:
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