Implantando objetos de banco de dados CLR

Implantação é o processo pelo qual você distribui um aplicativo concluído ou módulo a ser instalado e executado em outro computador. Usando o Microsoft Visual Studio, é possível desenvolver objetos de banco de dados do CLR (Common Language Runtime) e implantá-los em um servidor de teste. Os objetos de banco de dados gerenciados também podem ser compilados com os arquivos de redistribuição do Microsoft.NET Framework, e não o Visual Studio. Quando compilados, os assemblies que contêm os objetos de banco de dados do CLR podem ser implantados em um servidor de teste que usa o Visual Studio ou as instruções Transact-SQL. Observe que o Visual Studio .NET 2003 não pode ser usado na programação de integração ou no desenvolvimento do CLR. O SQL Server inclui o .NET Framework pré-instalado, e o Visual Studio .NET 2003 não pode usar os assemblies do .NET Framework 2.0.

Quando testados e verificados no servidor de teste, os métodos do CLR podem ser distribuídos para servidores de produção usando um script de implantação. O script de implantação pode ser gerado manualmente ou usando o SQL Server Management Studio (consulte o procedimento posteriormente neste tópico).

O recurso de integração do CLR permanece desativado por padrão no SQL Server, devendo estar habilitado para usar assemblies do CLR. Para obter mais informações, consulte Habilitando integração CLR.

ObservaçãoObservação

A partir do SQL Server 2005, em um banco de dados do SQL Server com um nível de compatibilidade "80", não é possível criar gatilhos, agregações, funções, procedimentos armazenados ou tipos de dados definidos pelo usuário gerenciados. Para usufruir esses recursos de integração do CLR do SQL Server, você deve usar o procedimento armazenado sp_dbcmptlevel (Transact-SQL) a fim de definir o nível de compatibilidade do banco de dados como "90".

Implantando o assembly no servidor de teste

Usando o Visual Studio, é possível desenvolver funções, procedimentos, gatilhos, UDTs ou UDAs (agregações definidas pelo usuário) e implantá-los em um servidor de teste. Os objetos de banco de dados gerenciados também podem ser compilados com os compiladores de linha de comando como, por exemplo, csc.exe e vbc.exe, incluídos nos arquivos de redistribuição do .NET Framework. O ambiente de desenvolvimento integrado do Visual Studio não é obrigatório para desenvolver objetos de banco de dados gerenciados para o SQL Server.

Verifique se todos os erros e avisos do compilador são resolvidos. Dessa forma, os assemblies que contêm as rotinas do CLR podem ser registrados em um banco de dados do SQL Server que usa o Visual Studio ou as instruções Transact-SQL.

ObservaçãoObservação

O protocolo de rede TCP/IP deve estar habilitado na instância do SQL Server para que o Microsoft Visual Studio seja usado no desenvolvimento remoto, na depuração e no desenvolvimento. Para obter mais informações sobre como habilitar o protocolo TCP/IP no servidor, consulte Configurando protocolos de rede de cliente.

Para implantar o assembly que usa o Visual Studio

  1. Compile o projeto selecionando Compilar <nome_do_projeto> no menu Compilar.

  2. Resolva todos os erros de compilação e avisos antes de implantar o assembly no servidor de teste.

  3. Selecione Implantar no menu Compilar. O assembly será registrado na instância do SQL Server e no banco de dados especificado quando o projeto do SQL Server foi criado inicialmente no Visual Studio.

Para implantar o assembly que usa Transact-SQL

  1. Compile o assembly no arquivo de origem que usa os compiladores de linha de comando incluídos no .NET Framework.

  2. Em arquivos de origem do Microsoft Visual C#:

  3. csc /target:library C:\helloworld.cs

  4. Em arquivos de origem do Microsoft Visual Basic:

vbc /target:library C:\helloworld.vb

Esses comandos iniciam o compilador do Visual C# ou do Visual Basic que usa a opção /target para especificar a compilação de uma DLL da biblioteca.

  1. Resolva todos os erros de compilação e avisos antes de implantar o assembly no servidor de teste.

  2. Abra o SQL Server Management Studio no servidor de teste. Crie uma consulta nova, conectada a um banco de dados de teste correspondente (como, por exemplo, AdventureWorks).

  3. Crie o assembly no servidor, adicionando a seguinte Transact-SQL à consulta.

CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE

  1. Assim, o procedimento, a função, a agregação, o tipo definido pelo usuário ou o gatilho deve ser criado na instância do SQL Server. Caso o assembly HelloWorld contenha um método chamado HelloWorld na classe Procedures, a seguinte Transact-SQL pode ser adicionada à consulta para criar um procedimento chamado hello no SQL Server.

CREATE PROCEDURE hello

AS

EXTERNAL NAME HelloWorld.Procedures.HelloWorld

Para obter mais informações sobre como criar tipos diferentes de objetos de banco de dados gerenciados no SQL Server, consulte Funções CLR definidas pelo usuário, Agregações CLR definidas pelo usuário, Tipos CLR definidos pelo usuário, Procedimentos armazenados CLR e Gatilhos CLR.

Implantando o assembly em servidores de produção

Uma vez testados e verificados no servidor de teste, os objetos de banco de dados do CLR podem ser distribuídos para servidores de produção. Para obter mais informações sobre como depurar objetos de banco de dados gerenciados, consulte Depurando objetos de banco de dados CLR.

A implantação dos objetos de banco de dados gerenciados é semelhante à dos objetos de banco de dados regulares (tabelas, rotinas Transact-SQL etc.). Os assemblies que contêm os objetos de banco de dados do CLR podem ser implantados em outros servidores que usam um script de implantação. O script de implantação pode ser compilado usando a funcionalidade "Gerar Scripts" do Management Studio. O script de implantação também pode ser compilado manualmente, ou usando "Gerar Scripts", e alterados manualmente. Uma vez compilado, o script de implantação pode ser executado em outras instâncias do SQL Server para implantar os objetos de banco de dados gerenciados.

Para gerar um script de implantação usando scripts de geração

  1. Abra o Management Studio e se conecte à instância do SQL Server em que o assembly gerenciado ou o objeto de banco de dados a ser implantado é registrado.

  2. No Pesquisador de Objetos, expanda as árvores <nome_do_servidor> e Bancos de Dados. Clique com o botão direito do mouse no banco de dados em que o objeto de banco de dados gerenciado está registrado, selecione Tarefas e Gerar Scripts. O Assistente de Script é aberto.

  3. Selecione o banco de dados na caixa de listagem e clique em Avançar.

  4. No painel Escolher Opções de Script, clique em Avançar ou altere as opções e clique em Avançar.

  5. No painel Escolher Tipos de Objeto, escolha o tipo de objeto de banco de dados a ser implantado. Clique em Avançar.

  6. Para todos os tipos de objeto selecionado no painel Escolher Tipos de Objeto, um painel Escolher <tipo> é apresentado. Nesse painel, é possível escolher uma dentre todas as instâncias do tipo de objeto de banco de dados registrado no banco de dados especificado. Selecione um ou mais objetos e clique em Avançar.

  7. O painel Opções de Saída será exibido quando todos os tipos de objeto de banco de dados desejados forem selecionados. Selecione Script para arquivo e especifique um caminho de arquivo para o script. Selecione Avançar. Examine as seleções e clique em Concluir. O script de implantação é salvo no caminho do arquivo especificado.

Scripts pós-implantação

É possível executar um script de pós-implantação.

Para adicionar um script de pós-implantação, adicione um arquivo chamado postdeployscript.sql no diretório do projeto do Visual Studio. Por exemplo, clique com o botão direito do mouse no projeto em Gerenciador de Soluções e selecione Adicionar Item Existente. Adicione o arquivo na raiz do projeto, e não na pasta Test Scripts.

Quando você clicar na implantação, o Visual Studio executará esse script após a implantação do projeto.