Tipos CLR definidos pelo usuário

O SQL Server dá a possibilidade para 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çãoObservação

Por padrão, a possibilidade de executar código do CLR está definida como OFF no SQL Server. O código do CLR pode ser habilitado usando o procedimento armazenado de sistema sp_configure.

Desde o SQL Server 2005, é possível usar UDTs (tipos definidos pelo usuário) para estender o sistema de tipo escalar do servidor, o que habilita o armazenamento de objetos do CLR em um banco de dados do SQL Server. 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 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. As UDTs do SQL Server são bem-apropriadas ao seguinte:

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

  • Aplicativos geoespaciais

  • Dados codificados ou criptografados

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

  1. Codifique e compile o assembly que define a UDT.   As UDTs são definidas usando qualquer uma das linguagens para as quais o CLR do .NET Framework oferece suporte e 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.   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-SQL CREATE ASSEMBLY, que copia o assembly que contém a classe ou a estrutura para um banco de dados.

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

    Antes do SQL Server 2005, não havia suporte para UDTs criadas em assemblies do .NET Framework. No entanto, ainda é possível usar tipos de dados de alias do SQL Server usando sp_addtype. A sintaxe de CREATE TYPE pode ser usada para criar tanto tipos de dados definidos nativos definidos pelo usuário do SQL Server quanto UDTs.

  4. **Crie tabelas, variáveis ou parâmetros usando a UDT   **Desde o SQL Server 2005, um tipo definido pelo usuário pode ser usado como a definição da 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