CREATE TYPE (Transact-SQL)CREATE TYPE (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure SQL nãoAzure Synapse Analytics (SQL DW) nãoData Warehouse Paralelo APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cria um tipo de dados de alias ou um tipo definido pelo usuário no banco de dados atual no SQL ServerSQL Server ou Banco de Dados SQL do AzureAzure SQL Database.Creates an alias data type or a user-defined type in the current database in SQL ServerSQL Server or Banco de Dados SQL do AzureAzure SQL Database. A implementação de um tipo de dados de alias é baseada em um tipo de sistema nativo do SQL ServerSQL Server.The implementation of an alias data type is based on a SQL ServerSQL Server native system type. Um tipo definido pelo usuário é implementado por meio de uma classe de um assembly no CLR (Common Language Runtime) do MicrosoftMicrosoft.NET Framework.NET Framework.A user-defined type is implemented through a class of an assembly in the MicrosoftMicrosoft.NET Framework.NET Framework common language runtime (CLR). Para associar um tipo definido pelo usuário à sua implementação, o assembly CLR que contém a implementação do tipo deve primeiro ser registrado no SQL ServerSQL Server com CREATE ASSEMBLY.To bind a user-defined type to its implementation, the CLR assembly that contains the implementation of the type must first be registered in SQL ServerSQL Server by using CREATE ASSEMBLY.

A capacidade de executar código CLR é desativada por padrão no SQL ServerSQL Server.The ability to run CLR code is off by default in SQL ServerSQL Server. Você pode criar, modificar e remover objetos do banco de dados que referenciam módulos de código gerenciado, mas essas referências não serão executadas no SQL ServerSQL Server a menos que a Opção clr enabled seja habilitada com sp_configure.You can create, modify and drop database objects that reference managed code modules, but these references will not execute in SQL ServerSQL Server unless the clr enabled Option is enabled by using sp_configure.

Observação

A integração do CLR do .NET Framework ao SQL Server é discutida neste tópico.The integration of .NET Framework CLR into SQL Server is discussed in this topic. A integração CLR não se aplica ao Azure Banco de Dados SQLSQL Database.CLR integration does not apply to Azure Banco de Dados SQLSQL Database.

Ícone de link do tópico Convenções da sintaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

-- User-defined Data Type Syntax    
CREATE TYPE [ schema_name. ] type_name  
{   
    [
      FROM base_type   
      [ ( precision [ , scale ] ) ]  
      [ NULL | NOT NULL ]
    ]
    | EXTERNAL NAME assembly_name [ .class_name ]   
    | AS TABLE ( { <column_definition> | <computed_column_definition> [ ,... n ] }
      [ <table_constraint> ] [ ,... n ]    
      [ <table_index> ] [ ,... n ] } )
 
} [ ; ]  
  
<column_definition> ::=  
column_name <data_type>  
    [ COLLATE collation_name ]   
    [ NULL | NOT NULL ]  
    [   
        DEFAULT constant_expression ]   
      | [ IDENTITY [ ( seed ,increment ) ]   
    ]  
    [ ROWGUIDCOL ] [ <column_constraint> [ ...n ] ]   
  
<data type> ::=   
[ type_schema_name . ] type_name   
    [ ( precision [ , scale ] | max |   
                [ { CONTENT | DOCUMENT } ] xml_schema_collection ) ]   
  
<column_constraint> ::=   
{     { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        [   
            WITH ( <index_option> [ ,...n ] )   
        ]  
  | CHECK ( logical_expression )   
}   
  
<computed_column_definition> ::=  
  
column_name AS computed_column_expression   
[ PERSISTED [ NOT NULL ] ]  
[   
    { PRIMARY KEY | UNIQUE }  
        [ CLUSTERED | NONCLUSTERED ]  
        [   
            WITH ( <index_option> [ ,...n ] )  
        ]  
    | CHECK ( logical_expression )   
]   
  
<table_constraint> ::=  
{   
    { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
    ( column [ ASC | DESC ] [ ,...n ] )   
        [   
    WITH ( <index_option> [ ,...n ] )   
        ]  
    | CHECK ( logical_expression )   
}   
  
<index_option> ::=  
{  
    IGNORE_DUP_KEY = { ON | OFF }  
}  

< table_index > ::=  
  INDEX constraint_name  
     [ CLUSTERED | NONCLUSTERED ]   (column [ ASC | DESC ] [ ,... n ] )} }  
-- User-defined Memory Optimized Table Types Syntax  
CREATE TYPE [schema_name. ] type_name  
AS TABLE ( { <column_definition> [ ,... n ] }  
    | [ <table_constraint> ] [ ,... n ]    
    | [ <table_index> ] [ ,... n ] } )
    [ WITH ( <table_option> [ ,... n ] ) ]  
 [ ; ]  
  
<column_definition> ::=  
column_name <data_type>  
    [ COLLATE collation_name ]   [ NULL | NOT NULL ]    [  
      [ IDENTITY [ (1 , 1) ]  
    ]  
    [ <column_constraint> [ ... n ] ]    [ <column_index> ]  
  
<data type> ::=  
 [type_schema_name . ] type_name [ (precision [ , scale ]) ]  
  
<column_constraint> ::=  
{ PRIMARY KEY {   NONCLUSTERED HASH WITH (BUCKET_COUNT = bucket_count) 
                | NONCLUSTERED } }  
  
< table_constraint > ::=  
{ PRIMARY KEY { NONCLUSTERED HASH (column [ ,... n ] ) 
                   WITH (BUCKET_COUNT = bucket_count) 
               | NONCLUSTERED  (column [ ASC | DESC ] [ ,... n ] )  } }  
  
<column_index> ::=  
  INDEX index_name  
{ { [ NONCLUSTERED ] HASH WITH (BUCKET_COUNT = bucket_count) 
     | NONCLUSTERED } }  
  
< table_index > ::=  
  INDEX constraint_name  
{ { [ NONCLUSTERED ] HASH (column [ ,... n ] ) WITH (BUCKET_COUNT = bucket_count) 
 |  [NONCLUSTERED]  (column [ ASC | DESC ] [ ,... n ] )} }  
  
<table_option> ::=  
{  
    [MEMORY_OPTIMIZED = {ON | OFF}]  
}  

ArgumentosArguments

schema_nameSchemaName
É o nome do esquema ao qual o tipo de dados de alias ou tipo definido pelo usuário pertence.Is the name of the schema to which the alias data type or user-defined type belongs.

type_nametypeName
É o nome do tipo de dados de alias ou tipo definido pelo usuário.Is the name of the alias data type or user-defined type. Os nomes de tipos devem obedecer às regras de identificadores.Type names must comply with the rules for identifiers.

base_typeBaseType
É o tipo de dados fornecido pelo SQL ServerSQL Server no qual o tipo de dados de alias se baseia.Is the SQL ServerSQL Server supplied data type on which the alias data type is based. base_type é sysname, sem padrão, e pode ter um dos seguintes valores: base_type is sysname, with no default, and can be one of the following values:

bigintbigint binary( n )binary( n ) bitBit char( n )char( n )
dateDate: datetimeDateTime datetime2datetime2 datetimeoffset
DateTimeOffset
decimal[decimal] floatFloat imagemImage intint
moneymoney nchar( n )nchar( n ) ntext
ntext numericnumeric
nvarchar( n | max)nvarchar( n | max) realReal smalldatetimeSmallDateTime smallintsmallint
smallmoneysmallmoney sql_variantsql_variant text
Text: timeTime:
tinyintTinyInt uniqueidentifieruniqueidentifier varbinary( n | max)varbinary( n | max) varchar( n | max)varchar( n | max)

base_type também pode ser qualquer sinônimo de tipo de dados mapeado para um desses tipos de dados de sistema. base_type can also be any data type synonym that maps to one of these system data types.

precisão Precision:
Para decimal ou numeric, é um inteiro não negativo que indica o número total máximo de dígitos decimais que podem ser armazenados à esquerda e à direita do ponto decimal.For decimal or numeric, is a non-negative integer that indicates the maximum total number of decimal digits that can be stored, both to the left and to the right of the decimal point. Para obter mais informações, consulte decimal e numeric (Transact-SQL).For more information, see decimal and numeric (Transact-SQL).

scaleScale
Para decimal ou numeric, é um inteiro não negativo que indica o número máximo de dígitos decimais que podem ser armazenados à direita do ponto decimal e ele deve ser menor ou igual à precisão.For decimal or numeric, is a non-negative integer that indicates the maximum number of decimal digits that can be stored to the right of the decimal point, and it must be less than or equal to the precision. Para obter mais informações, consulte decimal e numeric (Transact-SQL).For more information, see decimal and numeric (Transact-SQL).

NULL | NOT NULLNULL | NOT NULL
Especifica se o tipo pode ter um valor nulo.Specifies whether the type can hold a null value. Se não for especificado, NULL é o padrão.If not specified, NULL is the default.

assembly_nameassemblyName
Aplica-se a: SQL Server 2008SQL Server 2008 e posterior. Applies to: and later,

Especifica o assembly SQL ServerSQL Server que referencia a implementação do tipo definido pelo usuário no Common Language Runtime.Specifies the SQL ServerSQL Server assembly that references the implementation of the user-defined type in the common language runtime. assembly_name deve corresponder a um assembly existente no SQL ServerSQL Server no banco de dados atual. assembly_name should match an existing assembly in in the current database.

Observação

EXTERNAL_NAME não está disponível em um banco de dados independente.EXTERNAL_NAME is not available in a contained database.

[. class_name ]class_name ]
Aplica-se a: SQL Server 2008SQL Server 2008 e posterior. Applies to: and later,

Especifica a classe dentro do assembly que implementa o tipo definido pelo usuário.Specifies the class within the assembly that implements the user-defined type. class_name deve ser um identificador válido e deve existir como uma classe no assembly com visibilidade do assembly. class_name must be a valid identifier and must exist as a class in the assembly with assembly visibility. class_name diferencia maiúsculas de minúsculas, independentemente da ordenação de banco de dados, e deve corresponder exatamente ao nome de classe no assembly correspondente. class_name is case-sensitive, regardless of the database collation, and must exactly match the class name in the corresponding assembly. O nome de classe poderá ser um nome qualificado de namespace entre colchetes ( [ ] ) se a linguagem de programação usada para gravar a classe usar o conceito de namespaces, como C#.The class name can be a namespace-qualified name enclosed in square brackets ([ ]) if the programming language that is used to write the class uses the concept of namespaces, such as C#. Se class_name não for especificado, o SQL ServerSQL Server assumirá que ele é o mesmo que type_name.If class_name is not specified, SQL ServerSQL Server assumes it is the same as type_name.

<column_definition><column_definition>
Define as colunas para um tipo de tabela definido pelo usuário.Defines the columns for a user-defined table type.

<data type> Data type:
Define o tipo de dados em uma coluna para um tipo de tabela definido pelo usuário.Defines the data type in a column for a user-defined table type. Para obter mais informações sobre tipos de dados, consulte Tipos de dados (Transact-SQL).For more information about data types, see Data Types (Transact-SQL). Para obter mais informações sobre tabelas, consulte CREATE TABLE (Transact-SQL).For more information about tables, see CREATE TABLE (Transact-SQL).

<column_constraint><column_constraint>
Define as restrições de coluna para um tipo de tabela definido pelo usuário.Defines the column constraints for a user-defined table type. As restrições com suporte incluem PRIMARY KEY, UNIQUE e CHECK.Supported constraints include PRIMARY KEY, UNIQUE, and CHECK. Para obter mais informações sobre tabelas, consulte CREATE TABLE (Transact-SQL).For more information about tables, see CREATE TABLE (Transact-SQL).

<computed_column_definition> <computed_column_definition>::=
Define uma expressão de coluna computada como uma coluna em um tipo de tabela definido pelo usuário.Defines a computed column expression as a column in a user-defined table type. Para obter mais informações sobre tabelas, consulte CREATE TABLE (Transact-SQL).For more information about tables, see CREATE TABLE (Transact-SQL).

<table_constraint> table_constraint
Define uma restrição de tabela em um tipo de tabela definido pelo usuário.Defines a table constraint on a user-defined table type. As restrições com suporte incluem PRIMARY KEY, UNIQUE e CHECK.Supported constraints include PRIMARY KEY, UNIQUE, and CHECK.

<index_option> <index_option>::=
Especifica a resposta de erro para duplicar valores de chave em uma operação de inserção de várias linhas em um índice exclusivo clusterizado ou não clusterizado.Specifies the error response to duplicate key values in a multiple-row insert operation on a unique clustered or unique nonclustered index. Para obter mais informações sobre opções de índice, consulte CREATE INDEX (Transact-SQL).For more information about index options, see CREATE INDEX (Transact-SQL).

INDEX *index_name* [ CLUSTERED | NONCLUSTERED ] (*column_name* [ ASC | DESC ] [ ,... *n* ] )

Aplica-se a: SQL Server 2014 (12.x)SQL Server 2014 (12.x) e posterior e Banco de Dados SQL do AzureAzure SQL Database. Applies to: and later and .

Especifica a criação de um índice na tabela.Specifies to create an index on the table. Isso pode ser um índice clusterizado ou um índice não clusterizado.This can be a clustered index, or a nonclustered index. O índice conterá as colunas listadas e classificará os dados em ordem crescente ou decrescente.The index will contain the columns listed, and will sort the data in either ascending or descending order.

INDEXINDEX
Você deve especificar os índices de tabela e coluna como parte da instrução CREATE TABLE.You must specify column and table indexes as part of the CREATE TABLE statement. CREATE INDEX e DROP INDEX não têm suporte para tabelas com otimização de memória.CREATE INDEX and DROP INDEX are not supported for memory-optimized tables.

MEMORY_OPTIMIZEDMEMORY_OPTIMIZED
Aplica-se a: SQL Server 2014 (12.x)SQL Server 2014 (12.x) e posterior e Banco de Dados SQL do AzureAzure SQL Database. Applies to: and later and .

Indica se o tipo de tabela tem otimização de memória.Indicates whether the table type is memory optimized. Essa opção é desabilitada por padrão; a tabela (tipo) não é uma tabela (tipo) com otimização de memória.This option is off by default; the table (type) is not a memory optimized table (type). Os tipos de tabela com otimização de memória são tabelas de usuário com otimização de memória, o esquema que é mantido no disco, semelhante a outras tabelas de usuário.Memory optimized table types are memory-optimized user tables, the schema of which is persisted on disk similar to other user tables.

BUCKET_COUNTBUCKET_COUNT
Aplica-se a: SQL Server 2014 (12.x)SQL Server 2014 (12.x) e posterior e Banco de Dados SQL do AzureAzure SQL Database. Applies to: and later and .

Indica o número de buckets que devem ser criados no índice de hash.Indicates the number of buckets that should be created in the hash index. O valor máximo para BUCKET_COUNT em índices de hash é 1.073.741.824.The maximum value for BUCKET_COUNT in hash indexes is 1,073,741,824. Para obter mais informações sobre o número de buckets, veja Índices para tabelas com otimização de memória.For more information about bucket counts, see Indexes for Memory-Optimized Tables. bucket_count é um argumento obrigatório.Bucket_count is a required argument.

HASHHASH
Aplica-se a: SQL Server 2014 (12.x)SQL Server 2014 (12.x) e posterior e Banco de Dados SQL do AzureAzure SQL Database. Applies to: and later and .

Indica que um índice de HASH foi criado.Indicates that a HASH index is created. Há suporte para índices de hash apenas em tabelas com otimização de memória.Hash indexes are supported only on memory optimized tables.

ComentáriosRemarks

A classe do assembly que é referenciado em assembly_name, incluindo seus métodos, deve atender a todos os requisitos de implementação de um tipo definido pelo usuário no SQL ServerSQL Server.The class of the assembly that is referenced in assembly_name, together with its methods, should satisfy all the requirements for implementing a user-defined type in SQL ServerSQL Server. Para obter mais informações sobre esses requisitos, consulte Tipos CLR definidos pelo usuário.For more information about these requirements, see CLR User-Defined Types.

Considerações adicionais incluem o seguinte:Additional considerations include the following:

  • A classe pode ter métodos sobrecarregados, mas eles podem ser chamados somente de dentro do código gerenciado, e não do Transact-SQLTransact-SQL.The class can have overloaded methods, but these methods can be called only from within managed code, not from Transact-SQLTransact-SQL.

  • Os membros estáticos devem ser declarados como const ou readonly se assembly_name é SAFE ou EXTERNAL_ACCESS.Any static members must be declared as const or readonly if assembly_name is SAFE or EXTERNAL_ACCESS.

Dentro de um banco de dados, pode haver apenas um único tipo definido pelo usuário registrado em qualquer tipo especificado que seja carregado no SQL ServerSQL Server do CLR.Within a database, there can be only one user-defined type registered against any specified type that has been uploaded in SQL ServerSQL Server from the CLR. Se um tipo definido pelo usuário for criado em um tipo CLR para o qual um tipo definido pelo usuário já exista no banco de dados, CREATE TYPE falhará com um erro.If a user-defined type is created on a CLR type for which a user-defined type already exists in the database, CREATE TYPE fails with an error. Essa restrição é necessária para evitar ambiguidade durante a resolução de Tipo SQL se um tipo CLR puder ser mapeado para mais de um tipo definido pelo usuário.This restriction is required to avoid ambiguity during SQL Type resolution if a CLR type can be mapped to more than one user-defined type.

Se um método modificador no tipo não retornar void, a instrução CREATE TYPE não será executada.If any mutator method in the type does not return void, the CREATE TYPE statement does not execute.

Para modificar um tipo definido pelo usuário, você deve descartar o tipo usando uma instrução DROP TYPE e, em seguida, recriá-lo.To modify a user-defined type, you must drop the type by using a DROP TYPE statement and then re-create it.

Ao contrário dos tipos definidos pelo usuário que são criados com sp_addtype, a função de banco de dados public, não recebe automaticamente a permissão REFERENCES em tipos que são criados com CREATE TYPE.Unlike user-defined types that are created by using sp_addtype, the public database role is not automatically granted REFERENCES permission on types that are created by using CREATE TYPE. Essa permissão deve ser concedida separadamente.This permission must be granted separately.

Em tipos de tabela definidos pelo usuário, os tipos estruturados definidos pelo usuário que são usados em column_name <data type> fazem parte do escopo de esquema do banco de dados no qual o tipo de tabela é definido.In user-defined table types, structured user-defined types that are used in column_name <data type> are part of the database schema scope in which the table type is defined. Para acessar os tipos estruturados definidos pelo usuário em um escopo diferente dentro do banco de dados, use nomes de duas partes.To access structured user-defined types in a different scope within the database, use two-part names.

Em tipos de tabela definidos pelo usuário, a chave primária em colunas computadas deve ser PERSISTED e NOT NULL.In user-defined table types, the primary key on computed columns must be PERSISTED and NOT NULL.

Tipos de tabela com otimização de memóriaMemory-Optimized Table Types

Desde o SQL Server 2014 (12.x)SQL Server 2014 (12.x), o processamento de dados em um tipo de tabela pode ser feito na memória principal, e não no disco.Beginning in SQL Server 2014 (12.x)SQL Server 2014 (12.x), processing data in a table type can be done in primary memory, and not on disk. Para obter mais informações, veja OLTP in-memory (Otimização na memória).For more information, see In-Memory OLTP (In-Memory Optimization). Para obter exemplos de código que mostram como criar tipos de tabela com otimização de memória, consulte Criando uma tabela com otimização de memória e um procedimento armazenado compilado nativamente.For code samples showing how to create memory-optimized table types, see Creating a Memory-Optimized Table and a Natively Compiled Stored Procedure.

PermissõesPermissions

Exige a permissão CREATE TYPE no banco de dados atual e a permissão ALTER no schema_name.Requires CREATE TYPE permission in the current database and ALTER permission on schema_name. Se schema_name não for especificado, serão aplicadas as regras de resolução de nome padrão para determinar o esquema do usuário atual.If schema_name is not specified, the default name resolution rules for determining the schema for the current user apply. Se assembly_name for especificado, um usuário deverá ter o assembly ou ter a permissão REFERENCES nele.If assembly_name is specified, a user must either own the assembly or have REFERENCES permission on it.

Se qualquer coluna na instrução CREATE TABLE for definida como sendo de um tipo definido pelo usuário, a permissão REFERENCES no tipo definido pelo usuário será necessária.If any columns in the CREATE TABLE statement are defined to be of a user-defined type, REFERENCES permission on the user-defined type is required.

Observação

Um usuário que cria uma tabela com uma coluna que usa um tipo definido pelo usuário precisa da permissão REFERENCES no tipo definido pelo usuário.A user creating a table with a column that uses a user-defined type needs the REFERENCES permission on the user-defined type. Se essa tabela tiver que ser criada no TempDB, a permissão REFERENCES precisa ser concedida explicitamente toda vez antes de a tabela ser criada, ou este tipo de dados e as permissões REFERENCES precisam ser adicionados ao modelo de banco de dados.If this table must be created in TempDB, then either the REFERENCES permission needs to be granted explicitly each time before the table is created, or this data type and REFERENCES permissions need to be added to the Model database. Se isso for feito, esse tipo de dados e permissões estarão disponíveis em TempDB permanentemente.If this is done, then this data type and permissions will be available in TempDB permanently. Caso contrário, o tipo de dados e as permissões definidos pelo usuário desaparecerão quando o SQL Server for reiniciado.Otherwise, the user-defined data type and permissions will disappear when SQL Server is restarted. Para saber mais, veja CREATE TABLEFor more information, see CREATE TABLE.

ExemplosExamples

a.A. Criando um tipo de alias com base no tipo de dados varcharCreating an alias type based on the varchar data type

O exemplo a seguir cria um tipo de alias com base no tipo de dados varchar fornecido pelo sistema.The following example creates an alias type based on the system-supplied varchar data type.

CREATE TYPE SSN  
FROM varchar(11) NOT NULL ;  

B.B. Criando um tipo definido pelo usuárioCreating a user-defined type

O exemplo a seguir cria um tipo Utf8String que referencia a classe utf8string no assembly utf8string.The following example creates a type Utf8String that references class utf8string in the assembly utf8string. Antes de criar o tipo, o assembly utf8string é registrado no banco de dados local.Before creating the type, assembly utf8string is registered in the local database. Substitua a parte binária da instrução CREATE ASSEMBLY por uma descrição válida.Replace the binary portion of the CREATE ASSEMBLY statement with a valid description.

Aplica-se a: SQL Server 2008SQL Server 2008 e posterior. Applies to: and later,

CREATE ASSEMBLY utf8string  
AUTHORIZATION [dbi]   
FROM 0x4D... ;  
GO  
CREATE TYPE Utf8String   
EXTERNAL NAME utf8string.[Microsoft.Samples.SqlServer.utf8string] ;  
GO  

C.C. Criando um tipo de tabela definido pelo usuárioCreating a user-defined table type

O exemplo a seguir cria um tipo de tabela definido pelo usuário que tem duas colunas.The following example creates a user-defined table type that has two columns. Para obter mais informações sobre como criar e usar parâmetros com valor de tabela, consulte Usar parâmetros com valor de tabela (Mecanismo de Banco de Dados).For more information about how to create and use table-valued parameters, see Use Table-Valued Parameters (Database Engine).

CREATE TYPE LocationTableType AS TABLE   
    ( LocationName VARCHAR(50)  
    , CostRate INT );  
GO  

D.D. Como criar um tipo de tabela definido pelo usuário com o índice e a chave primáriaCreating a user-defined table type with primary key and index

O exemplo a seguir cria um tipo de tabela definido pelo usuário que tem três colunas, uma delas (Name) é a chave primária e outra (Price) tem um índice não clusterizado.The following example creates a user-defined table type that has three columns, one of which (Name) is the primary key and another (Price) has a nonclustered index. Para obter mais informações sobre como criar e usar parâmetros com valor de tabela, consulte Usar parâmetros com valor de tabela (Mecanismo de Banco de Dados).For more information about how to create and use table-valued parameters, see Use Table-Valued Parameters (Database Engine).

CREATE TYPE InventoryItem AS TABLE
(
    [Name] NVARCHAR(50) NOT NULL,
    SupplierId BIGINT NOT NULL,
    Price DECIMAL (18, 4) NULL,
    PRIMARY KEY (
        Name
    ),
    INDEX IX_InventoryItem_Price (
        Price
    )
)
GO

Consulte TambémSee Also

CREATE ASSEMBLY (Transact-SQL) CREATE ASSEMBLY (Transact-SQL)
DROP TYPE (Transact-SQL) DROP TYPE (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
Tipos definidos pelo usuário de CLR CLR User-Defined Types
Trabalhando com tipos de dados definidos pelo usuário no SQL ServerWorking with User-Defined Types in SQL Server