Tipos definido pelo usuário CLR

Aplica-se a:SQL Server

SQL Server oferece a capacidade de criar objetos de banco de dados programados em um assembly criado no CLR (Common Language Runtime) do .NET Framework. 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.

Observação

A capacidade de executar o código CLR é definida como OFF por padrão em SQL Server. O CLR pode ser habilitado usando o procedimento armazenado do sistema sp_configure .

A partir do SQL Server 2005 (9.x), você pode usar UDTs (tipos definidos pelo usuário) para estender o sistema de tipos escalares do servidor, habilitando o armazenamento de objetos CLR em um banco de dados SQL Server. Os UDTs podem conter vários elementos e podem ter comportamentos, diferenciando-os dos tipos de dados de alias tradicionais que consistem em um único tipo de dados do sistema SQL Server.

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. Dados complexos costumam ser mais bem modelados usando linhas e tabelas tradicionais. UDTs em SQL Server são adequados para o seguinte:

  • Tipos de data, hora, moeda e numéricos estendidos

  • Aplicativos geoespaciais

  • Dados codificados ou criptografados

O processo de desenvolvimento de UDTs em SQL Server consiste nas seguintes etapas:

  1. Codifique e compile o assembly que define a UDT. Os UDTs são definidos usando qualquer uma das linguagens compatíveis com o CLR (Common Language Runtime) do the.NET Framework que produzem código verificável. Isso inclui o Visual C# e o 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.

  2. Registre o assembly. Os UDTs podem ser implantados por meio da interface do usuário do Visual Studio em um projeto de banco de dados ou usando a instrução CREATE ASSEMBLY do Transact-SQL, que copia o assembly que contém a classe ou estrutura em um banco de dados.

  3. Crie a UDT no SQL Server. Depois que um assembly é carregado em um banco de dados host, você usa a instrução CREATE TYPE do Transact-SQL para criar um UDT e expor os membros da classe ou estrutura como membros do 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.

    Observação

    Antes SQL Server 2005 (9.x), não havia suporte para UDTs criados a partir de assemblies .NET Framework. No entanto, você ainda pode usar SQL Server tipos de dados de alias usando sp_addtype. A sintaxe CREATE TYPE pode ser usada para criar tipos de dados nativos SQL Server definidos pelo usuário e UDTs.

  4. Criar tabelas, variáveis ou parâmetros usando a UDT Começando com SQL Server 2005 (9.x), um tipo definido pelo usuário pode ser usado como a definição de coluna de uma tabela, como uma variável em um lote Transact-SQL ou como um argumento de uma função Transact-SQL ou procedimento armazenado.

Nesta seção

Criando um tipo de User-Defined
Descreve como criar UDTs.

Registrando tipos definidos pelo usuário no SQL Server
Descreve como registrar e gerenciar UDTs em SQL Server.

Trabalhando com tipos de dados definidos pelo usuário no SQL Server
Descreve como criar consultas que usam UDTs.

Acessando tipos definidos pelo usuário no ADO.NET
Descreve como trabalhar com UDTs usando o provedor de dados .NET Framework para SQL Server em ADO.NET.