Share via


Assemblies – implementar

Aplica-se a:SQL Server

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 em SQL Server usando a instrução CREATE ASSEMBLY do Transact-SQL ou no SQL Server Management Studio usando o Editor Assistido do Assembly. Além disso, a implantação de um projeto de SQL Server no Microsoft Visual Studio registra um assembly no banco de dados especificado para o projeto. Para obter mais informações, consulte Deploying CLR Database Objects.

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 em SQL Server usando a instrução ALTER ASSEMBLY do Transact-SQL ou em SQL Server Management Studio usando o Editor Assistido por 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 de assembly mais adiante neste tópico.

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

  • Altere a visibilidade do assembly. Assemblies visíveis estão disponíveis para referência em SQL Server. Assemblies não visíveis não estão disponíveis, mesmo se tiverem sido carregados no banco de dados. Por padrão, assemblies carregados em uma instância de 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 do Transact-SQL ou SQL Server Management Studio.

Para descartar um assembly usando o Transact-SQL

Para descartar um assembly usando o SQL Server Management Studio

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

Para desabilitar e habilitar a execução de assemblies

Gerenciando versões de assembly

Quando um assembly é carregado em uma instância SQL Server, o assembly é armazenado e gerenciado dentro dos 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 for preciso modificar um assembly, você deverá 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 de .NET Framework que mantêm sua implementação.

A cláusula WITH UNCHECKED DATA da instrução ALTER ASSEMBLY instrui SQL Server a atualizar até mesmo os assemblies nos quais os dados persistentes no banco de dados são dependentes. Especificamente, você deve especificar WITH UNCHECKED DATA se qualquer uma dessas opções existir:

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

  • As colunas de um tipo de dado 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 executada se a nova versão do assembly afetar dados existentes em tabelas, índices ou outros locais persistentes. No entanto, 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 ter certeza de que não haja nenhuma desigualdade entre o resultado de uma expressão e um valor que é baseado naquela expressão armazenado no assembly.

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

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

Para resolve a integridade dos dados desmarcados, execute DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS em cada tabela que tenha dados desmarcados. Se DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS 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 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. 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 computadores para associação de versões

Se as referências a assemblies armazenados em SQL Server forem redirecionadas para versões específicas usando a política de 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 de 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