Implementar assemblies
Aplica-se a:SQL Server
Este artigo fornece informações sobre as seguintes áreas para ajudá-lo a implementar e trabalhar com assemblies no banco de dados:
- Criação de assemblies
- Modificando assemblies
- Descartar, desativar e habilitar montagens
- Gerenciando versões de montagem
Criar assemblies
Os assemblies são criados no SQL Server usando a instrução Transact-SQL CREATE ASSEMBLY
ou no SQL Server Management Studio usando o Editor Assistido por Assembly. Além disso, a implantação de um projeto do SQL Server no Visual Studio registra um assembly no banco de dados que foi especificado para o projeto. Para obter mais informações, consulte Implantar objetos de banco de dados CLR.
- Com Transact-SQL: CREATE ASSEMBLY (Transact-SQL)
- Com o SQL Server Management Studio: propriedades Assembly
Modificar assemblies
Os assemblies são modificados no SQL Server usando a instrução Transact-SQL ALTER ASSEMBLY
ou no SQL Server Management Studio usando o Editor Assistido por Assembly.
- Com Transact-SQL: ALTER ASSEMBLY (Transact-SQL)
- Com o SQL Server Management Studio: propriedades Assembly
Você pode modificar um assembly quando quiser executar as seguintes ações:
Altere a implementação do assembly carregando uma versão mais recente dos binários do assembly. Para obter mais informações, consulte Gerenciar versões de assembly mais adiante neste artigo.
Altere o conjunto de permissões do assembly. Para obter mais informações, consulte Projetar montagens.
Altere a visibilidade da montagem. Os assemblies visíveis estão disponíveis para referência no SQL Server. Os assemblies não visíveis não estão disponíveis, mesmo que sejam carregados no banco de dados. Por padrão, os assemblies carregados em uma instância do SQL Server são visíveis.
Adicione ou solte um arquivo de depuração ou de origem associado ao assembly.
Soltar, desativar e habilitar montagens
Os assemblies são descartados usando a instrução Transact-SQL DROP ASSEMBLY
ou o SQL Server Management Studio.
- Com Transact-SQL: DROP ASSEMBLY (Transact-SQL)
- Com o SQL Server Management Studio: excluir objetos
Por padrão, todos os assemblies criados no SQL Server são desabilitados da execução. Você pode usar a opção clr enabled
do procedimento armazenado do sistema sp_configure
para desabilitar ou habilitar a execução de todos os assemblies carregados no SQL Server. A desativação da execução de assembly impede a execução de funções CLR (Common Language Runtime), procedimentos armazenados, gatilhos, agregações e tipos definidos pelo usuário e interrompe qualquer um que esteja em execução no momento. A desativação da execução de assembly não desabilita a capacidade de criar, alterar ou descartar assemblies. Para obter mais informações, consulte Configuração do Server: clr enabled.
Para obter mais informações, consulte sp_configure.
Gerenciar versões de montagem
Quando um assembly é carregado em uma instância do SQL Server, o assembly é armazenado e gerenciado nos catálogos do sistema de banco de dados. Quaisquer alterações feitas na definição do assembly no .NET Framework devem ser propagadas para o assembly armazenado no catálogo de banco de dados.
Quando você precisa modificar um assembly, você deve emitir uma instrução ALTER ASSEMBLY
para atualizar o assembly no banco de dados. Esta instrução atualiza 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 os assemblies dos quais os dados persistentes no banco de dados são dependentes. Especificamente, você deve especificar WITH UNCHECKED DATA
se alguma das seguintes opções existir:
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ãoNative
).
Atenção
Se WITH UNCHECKED DATA
não for especificado, o SQL Server tentará impedir a execução de ALTER ASSEMBLY
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, índices, exibições indexadas ou expressões computadas serão 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 membros da função de banco de dados db_owner e db_ddlowner fixa podem executar ALTER ASSEMBLY
usando a cláusula WITH UNCHECKED DATA
.
O SQL Server posta uma mensagem no log de eventos do Aplicativo do Windows informando que o assembly foi modificado com dados não verificados 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 de catálogo sys.tables
contém o valor 1
para tabelas que contêm dados não verificados e 0
para tabelas sem dados não verificados.
Para resolver a integridade de dados não verificados, execute DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS
em cada tabela que tenha dados não verificados. Se DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS
falhar, você deve excluir as linhas da tabela que não são válidas ou modificar o código do assembly para resolver problemas e, em seguida, emitir mais instruções ALTER ASSEMBLY
.
ALTER ASSEMBLY
altera a versão do assembly. A cultura e a chave pública da assembleia permanecem as mesmas. 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 vinculação de versão
Se as referências a assemblies armazenados no SQL Server forem redirecionadas para versões específicas usando a diretiva de editor ou a diretiva de administrador em todo o computador, você deverá executar uma das seguintes ações:
Verifique se a nova versão para a qual esse redirecionamento é feito está no banco de dados.
Modifique quaisquer instruções para os arquivos de diretiva externa do computador ou da política do editor para garantir que eles façam 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 obter mais informações, consulte ALTER ASSEMBLY.