Ответ 1
Вместо того, чтобы смотреть в sys.objects
для них, вы должны смотреть в sys.types
или sys.table_types
(который дополнительно предоставляет type_table_object_id
).
SELECT name,
schema_id /*Will be the "test" schema id*/
FROM sys.types
WHERE is_table_type = 1
AND name = 'MyUserTableType'
При создании пользовательского типа он добавляет строку sys.sysscalartypes
с предоставленной пользователем схемой и именем и строкой в sys.sysschobjs
с системным сгенерированным именем в схеме sys
. Сгенерированное имя системы создается путем объединения TT_
+ FriendlyName + _
+ Hex-версии идентификатора объекта.
Два объекта связаны друг с другом через sys.syssingleobjrefs
/*This query only works via the DAC*/
SELECT so.id AS object_id,
st.id AS user_type_id,
*
FROM sys.sysschobjs so
JOIN sys.syssingleobjrefs sor
ON sor.indepid = so.id
JOIN sys.sysscalartypes st
ON st.id = sor.depid
WHERE st.name = 'MyUserTableType'