Contains a row for each system and user-defined type.
|Column name||Data type||Description|
|name||sysname||Name of the type. Is unique within the schema.|
|system_type_id||tinyint||ID of the internal system-type of the type.|
|user_type_id||int||ID of the type. Is unique within the database. For system data types, user_type_id = system_type_id.|
|schema_id||int||ID of the schema to which the type belongs.|
|principal_id||int||ID of the individual owner if different from schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.|
NULL if there is no alternate individual owner.
|max_length||smallint||Maximum length (in bytes) of the type.|
-1 = Column data type is varchar(max), nvarchar(max), varbinary(max), or xml.
For text columns, the max_length value will be 16.
|precision||tinyint||Max precision of the type if it is numeric-based; otherwise, 0.|
|scale||tinyint||Max scale of the type if it is numeric-based; otherwise, 0.|
|collation_name||sysname||Name of the collation of the type if it is character-based; other wise, NULL.|
|is_nullable||bit||Type is nullable.|
|is_user_defined||bit||1 = User-defined type.|
0 = SQL Server system data type.
|is_assembly_type||bit||1 = Implementation of the type is defined in a CLR assembly.|
0 = Type is based on a SQL Server system data type.
|default_object_id||int||ID of the stand-alone default that is bound to the type by using sp_bindefault.|
0 = No default exists.
|rule_object_id||int||ID of the stand-alone rule that is bound to the type by using sp_bindrule.|
0 = No rule exists.
|is_table_type||bit||Indicates the type is a table.|
The visibility of the metadata in catalog views is limited to securables that a user either owns or on which the user has been granted some permission. For more information, see Metadata Visibility Configuration.