什么是真实的sys.all_objects?
What is the true sys.all_objects?
我正在与 SQL Server 2008 R2
和 SQL Server 2016
合作。
我有一堆 User-Defined Data Types
,但它们没有显示在 sys.all_objects
中。可以return所有用户自定义对象的真实目录视图是什么?
谢谢
类型不是会出现在对象 table 中的对象。您可以使用类型 table:
select *
from sys.types
WHERE is_user_defined = 1
或者您可以使用从 MS docs 到 return 所有对象、类型和架构集合的更大查询:
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
我正在与 SQL Server 2008 R2
和 SQL Server 2016
合作。
我有一堆 User-Defined Data Types
,但它们没有显示在 sys.all_objects
中。可以return所有用户自定义对象的真实目录视图是什么?
谢谢
类型不是会出现在对象 table 中的对象。您可以使用类型 table:
select *
from sys.types
WHERE is_user_defined = 1
或者您可以使用从 MS docs 到 return 所有对象、类型和架构集合的更大查询:
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