Tipos CLR definidos pelo usuárioCLR User-Defined Types

Este tópico aplica-se a: Simdo SQL Serversembanco de dados do SQL AzuresemAzure SQL Data Warehouse sem Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse SQL ServerSQL Server fornece a capacidade de criar objetos de banco de dados programados em um assembly criado no.NET Framework common language runtime (CLR). SQL ServerSQL Server gives you the ability to create database objects that are programmed against an assembly created in the.NET Framework common language runtime (CLR). Os objetos do banco de dados que podem usufruir o modelo de programação avançado fornecido pelo CLR incluem gatilhos, procedimentos armazenados, funções, funções de agregação e tipos.Database objects that can take advantage of the rich programming model provided by the CLR include triggers, stored procedures, functions, aggregate functions, and types.

Observação

Por padrão, a possibilidade de executar código do CLR está definida como OFF no SQL ServerSQL Server.The ability to execute CLR code is set to OFF by default in SQL ServerSQL Server. O CLR pode ser habilitado usando o sp_configure procedimento armazenado do sistema.The CLR can be enabled by using the sp_configure system stored procedure.

Começando com SQL Server 2005SQL Server 2005, você pode usar tipos definidos pelo usuário (UDTs) para estender o sistema de tipo escalar do servidor, permitindo o armazenamento de objetos CLR em um SQL ServerSQL Server banco de dados.Beginning with SQL Server 2005SQL Server 2005, you can use user-defined types (UDTs) to extend the scalar type system of the server, enabling storage of CLR objects in a SQL ServerSQL Server database. As UDTs podem conter vários elementos e apresentar comportamentos, o que as diferencia dos tipos de dados de alias tradicionais, que consistem em um único tipo de dados de sistema do SQL ServerSQL Server.UDTs can contain multiple elements and can have behaviors, differentiating them from the traditional alias data types which consist of a single SQL ServerSQL Server system data type.

Como as UDTs são acessadas pelo sistema como um todo, seu uso em tipos de dados complexos pode apresentar um impacto negativo em relação ao desempenho.Because UDTs are accessed by the system as a whole, their use for complex data types may negatively impact performance. Dados complexos costumam ser mais bem modelados usando linhas e tabelas tradicionais.Complex data is generally best modeled using traditional rows and tables. As UDTs do SQL ServerSQL Server são bem-apropriadas ao seguinte:UDTs in SQL ServerSQL Server are well suited to the following:

  • Tipos de data, hora, moeda e numéricos estendidosDate, time, currency, and extended numeric types

  • Aplicativos geoespaciaisGeospatial applications

  • Dados codificados ou criptografadosEncoded or encrypted data

    O processo de desenvolvimento das UDTs no SQL ServerSQL Server consiste nas seguintes etapas:The process of developing UDTs in SQL ServerSQL Server consists of the following steps:

  1. Codifique e compile o assembly que define a UDT.Code and build the assembly that defines the UDT. As UDTs são definidas usando qualquer um dos idiomas com suporte.NET Framework common language runtime (CLR) que produzem código verificável.UDTs are defined using any of the languages supported by the.NET Framework common language runtime (CLR) that produce verifiable code. Isso inclui o Visual C# e o Visual Basic .NET.This includes Visual C# and Visual Basic .NET. Os dados são expostos como campos e propriedades de uma classe ou estrutura do .NET Framework, e os comportamentos são definidos pelos métodos da classe ou estrutura.The data is exposed as fields and properties of a .NET Framework class or structure, and behaviors are defined by methods of the class or structure.

  2. Registre o assembly.Register the assembly. As UDTs podem ser implantadas por meio da interface do usuário do Visual Studio em um projeto de banco de dados ou usando a instrução Transact-SQLTransact-SQL CREATE ASSEMBLY, que copia o assembly que contém a classe ou a estrutura para um banco de dados.UDTs can be deployed through the Visual Studio user interface in a database project, or by using the Transact-SQLTransact-SQL CREATE ASSEMBLY statement, which copies the assembly containing the class or structure into a database.

  3. Crie a UDT no SQL Server.Create the UDT in SQL Server. Uma vez que o assembly está carregado em um banco de dados de host, você usa a instrução Transact-SQLTransact-SQL CREATE TYPE para criar uma UDT e expor os membros da classe ou da estrutura como membros da UDT.Once an assembly is loaded into a host database, you use the Transact-SQLTransact-SQL CREATE TYPE statement to create a UDT and expose the members of the class or structure as members of the UDT. As UDTs só existem no contexto de um único banco de dados e, uma vez registradas, não têm dependências quanto a arquivos externos nos quais foram criados.UDTs exist only in the context of a single database, and, once registered, have no dependencies on the external files from which they were created.

    Observação

    Antes do SQL Server 2005SQL Server 2005, não havia suporte para UDTs criadas em assemblies do .NET Framework.Before SQL Server 2005SQL Server 2005, UDTs created from .NET Framework assemblies were not supported. No entanto, você ainda pode usar SQL ServerSQL Server tipos de dados de alias usando sp_addtype.However, you can still use SQL ServerSQL Server alias data types by using sp_addtype. A sintaxe de CREATE TYPE pode ser usada para criar tanto tipos de dados definidos nativos definidos pelo usuário do SQL ServerSQL Server quanto UDTs.The CREATE TYPE syntax can be used for creating both native SQL ServerSQL Server user-defined data types and UDTs.

  4. Criar tabelas, variáveis ou parâmetros usando a UDT começando com SQL Server 2005SQL Server 2005, um tipo definido pelo usuário pode ser usado como a definição de coluna de uma tabela, como uma variável em uma Transact-SQLTransact-SQL em lotes, ou como um argumento de um Transact-SQLTransact-SQL de função ou armazenado procedimento.Create tables, variables, or parameters using the UDT Beginning with SQL Server 2005SQL Server 2005, a user-defined type can be used as the column definition of a table, as a variable in a Transact-SQLTransact-SQL batch, or as an argument of a Transact-SQLTransact-SQL function or stored procedure.

Nesta seçãoIn This Section

Criando um tipo definido pelo usuárioCreating a User-Defined Type
Descreve como criar UDTs.Describes how to create UDTs.

Registrando tipos definidos pelo usuário no SQL ServerRegistering User-Defined Types in SQL Server
Descreve como registrar e gerenciar UDTs no SQL ServerSQL Server.Describes how to register and manage UDTs in SQL ServerSQL Server.

Trabalhando com tipos de dados definidos pelo usuário no SQL ServerWorking with User-Defined Types in SQL Server
Descreve como criar consultas que usam UDTs.Describes how to create queries using UDTs.

Acessando tipos definidos pelo usuário no ADO.NETAccessing User-Defined Types in ADO.NET
Descreve como trabalhar com UDTs que usam o provedor de dados .NET Framework do SQL ServerSQL Server no ADO.NET.Describes how to work with UDTs using the .NET Framework Data Provider for SQL ServerSQL Server in ADO.NET.