una - tipos de usuarios en sql server
¿Cómo enumero los tipos definidos por el usuario en una base de datos de SQL Server? (2)
Los tipos y UDT no aparecen en sys.objects. Debería poder obtener lo que está buscando con lo siguiente:
select * from sys.types
where is_user_defined = 1
Necesito enumerar todos los tipos definidos por el usuario creados en una base de datos de SQL Server
con CREATE TYPE
, y / o averiguar si ya se han definido.
Con tablas o procedimientos almacenados haría algo como esto:
if exists (select * from dbo.sysobjects where name=''foobar'' and xtype=''U'')
drop table foobar
Sin embargo, no puedo encontrar el equivalente (o una alternativa adecuada) para los tipos definidos por el usuario. Definitivamente no puedo verlos en ningún lado en sysobjects
.
¿Alguien puede iluminarme?
Aunque la publicación es antigua, me pareció útil utilizar una consulta similar a esta. Es posible que no encuentre útil el formato, pero quería el nombre de tipo completo y quería ver las columnas en orden. Puedes eliminar todas las cosas SUBSTRING para obtener solo el nombre de la columna.
SELECT USER_NAME(TYPE.schema_id) + ''.'' + TYPE.name AS "Type Name",
COL.column_id,
SUBSTRING(CAST(COL.column_id + 100 AS char(3)), 2, 2) + '': '' + COL.name AS "Column",
ST.name AS "Data Type",
CASE COL.Is_Nullable
WHEN 1 THEN ''''
ELSE ''NOT NULL''
END AS "Nullable",
COL.max_length AS "Length",
COL.[precision] AS "Precision",
COL.scale AS "Scale",
ST.collation AS "Collation"
FROM sys.table_types TYPE
JOIN sys.columns COL
ON TYPE.type_table_object_id = COL.object_id
JOIN sys.systypes AS ST
ON ST.xtype = COL.system_type_id
where TYPE.is_user_defined = 1
ORDER BY "Type Name",
COL.column_id