Compartilhar via


Implementando assemblies

Este tópico fornece informações sobre as seguintes áreas para ajudá-lo a implementar e trabalhar com assemblies no banco de dados:

  • Criando assemblies

  • Modificando assemblies

  • Descartar, desabilitar e habilitar assemblies

  • Gerenciando versões de assembly

Criando assemblies

Os assemblies são criados no SQL Server usando a instrução CREATE ASSEMBLY Transact-SQL ou no SQL Server Management Studio usando o Editor Assistido do Assembly. Além disso, a implantação de um Projeto do SQL Server no Microsoft Visual Studio registra um assembly no banco de dados especificado para o projeto. Para obter mais informações, consulte Implantando objetos de banco de dados CLR.

Para criar um assembly usando o Transact-SQL

Para criar um assembly usando o SQL Server Management Studio

Modificando assemblies

Os assemblies são modificados no SQL Server usando a instrução ALTER ASSEMBLY Transact-SQL ou no SQL Server Management Studio usando o Editor Assistido do Assembly. Você pode modificar um assembly quando quiser fazer o seguinte:

  • Altere a implementação do assembly carregando uma versão mais nova dos binários do assembly. Para obter mais informações, consulte Gerenciando versões do assembly mais adiante neste tópico.

  • Altere o conjunto de permissões do assembly. Para obter mais informações, consulte Design de assemblies.

  • Altere a visibilidade do assembly. Assemblies visíveis estão disponíveis para referência no SQL Server. Assemblies não visível não estão disponíveis, mesmo que tenham sido carregados no banco de dados. Por padrão, os assemblies carregados em uma instância do SQL Server são visíveis.

  • Adicione ou descarte um arquivo de depuração ou de origem associado ao assembly.

Para modificar um assembly usando o Transact-SQL

Para modificar um assembly usando o SQL Server Management Studio

Descartando, desabilitando e habilitando assemblies

Os assemblies são descartados usando a instrução DROP ASSEMBLY Transact-SQL ou o SQL Server Management Studio.

Para remover um assembly usando o Transact-SQL

Para remover um assembly usando o SQL Server Management Studio

Por padrão, todos os assemblies criados no SQL Server são desabilitados da execução. Você pode usar a opção clr habilitada do procedimento armazenado do sistema sp_configure para desabilitar ou habilitar a execução de todos os assemblies carregados no SQL Server. Desabilitar a execução do assembly impede que funções CLR (Common Language Runtime), procedimentos armazenados, gatilhos, agregações e tipos definidos pelo usuário sejam executados e interrompe aqueles que estão em execução no momento. Desabilitar a execução do assembly não desabilita a capacidade de criar, alterar ou remover assemblies. Para obter mais informações, consulte a opção de configuração de servidor habilitada para clr.

Para desabilitar e habilitar a execução do assembly

Gerenciando versões do assembly

Quando um assembly é carregado em uma instância SQL Server, o assembly é armazenado e gerenciado nos catálogos do sistema de banco de dados. Todas as alterações feitas na definição do assembly no Microsoft .NET Framework devem ser propagadas para o assembly armazenado no catálogo de banco de dados.

Quando você precisa modificar um assembly, deve emitir uma instrução ALTER ASSEMBLY para atualizar o assembly no banco de dados. Isso atualizará o assembly para a cópia mais recente dos módulos do .NET Framework que mantêm sua implementação.

A cláusula WITH UNCHECKED DATA da instrução ALTER ASSEMBLY instrui o SQL Server a atualizar até mesmo aqueles assemblies nos quais os dados persistentes no banco de dados são dependentes. Especificamente, você deve especificar WITH UNCHECKED DATA se houver qualquer um dos seguintes:

  • Colunas computadas persistentes que fazem referência a métodos no assembly, direta ou indiretamente, por meio de funções ou métodos Transact-SQL.

  • Colunas de um tipo clr definido pelo usuário que dependem do assembly e o tipo implementa um formato de serialização UserDefined (não nativo).

Cuidado

Se WITH UNCHECKED DATA não for especificado, o SQL Server tentará impedir que ALTER ASSEMBLY seja executado se a nova versão do assembly afetar dados existentes em tabelas, índices ou outros sites persistentes. No entanto, o SQL Server não garante que colunas computadas, índices, exibições indexadas ou expressões sejam consistentes com as rotinas e tipos subjacentes quando o assembly CLR for atualizado. Tenha cuidado ao executar ALTER ASSEMBLY para garantir que não haja nenhuma incompatibilidade entre o resultado de uma expressão e um valor baseado nessa expressão armazenada no assembly.

Somente os membros da função de banco de dados fixa db_owner e db_ddlowner podem executar ALTER ASSEMBLY usando a cláusula WITH UNCHECKED DATA.

O SQL Server posta uma mensagem no log de eventos do aplicativo Windows informando que o assembly foi modificado com dados desmarcados nas tabelas. Em seguida, o SQL Server marca todas as tabelas que contêm dados dependentes do assembly como tendo dados não verificados. A coluna has_unchecked_assembly_data da exibição do catálogo sys.tables contém o valor 1 para tabelas que contêm dados desmarcados e 0 para tabelas sem dados desmarcados.

Para resolver a integridade de dados desmarcados, execute DBCC CHECKTABLE em cada tabela que tenha dados desmarcados. Se DBCC CHECKTABLE falhar, você deverá excluir as linhas de tabela que não são válidas ou modificar o código do assembly para resolver problemas e, em seguida, emitir instruções ALTER ASSEMBLY adicionais.

ALTER ASSEMBLY altera a versão do assembly. A cultura e o token de chave pública do assembly permanecem os mesmos. O SQL Server não permite registrar versões diferentes de um assembly com o mesmo nome, cultura e chave pública.

Interações com a política de todo o computador para associação de versão

Se as referências a assemblies armazenados no SQL Server forem redirecionadas para versões específicas usando a política do editor ou a política de administrador em todo o computador, você deverá fazer um dos seguintes procedimentos:

  • Verificar se a nova versão para a qual esse redirecionamento é feito está no banco de dados.

  • Modificar qualquer instrução dos arquivos de política externa do computador ou de política de publicador para ter certeza de que fazem referência à versão específica que está no banco de dados.

Caso contrário, uma tentativa de carregar uma nova versão do assembly para a instância do SQL Server falhará.

Para atualizar a versão de um assembly

Consulte Também

Assemblies (Mecanismo de Banco de Dados)
Obtendo informações sobre assemblies