Au lieu de chercher dans sys.objects
pour ceux-ci, vous devriez regarder dans sys.types
ou sys.table_types
(qui expose en outre le 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'
Lorsque vous créez un type défini par l'utilisateur, il ajoute une ligne à sys.sysscalartypes
avec le schéma et le nom fournis par l'utilisateur et une ligne vers sys.sysschobjs
avec un nom généré par le système dans le sys
schéma. Le nom généré par le système est créé en concaténant TT_
+ FriendlyName + _
+ Version hexadécimale de l'identifiant de l'objet.
Les deux entités sont liées entre elles via 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'