Implementando aplicativos da camada de dados

Um DAC (aplicativo da camada de dados) define os esquemas e objetos do Mecanismo de banco de dados do SQL Server que são necessários para dar suporte a um aplicativo. Um DAC pode ser implementado usando um de dois processos:

  • Um DAC pode ser criado e compilado usando-se um projeto de Aplicativo da Camada de Dados do SQL Server no Microsoft Visual Studio 2010.

  • Um DAC pode ser extraído de um banco de dados existente usando-se o Assistente para Extrair Aplicativo da Camada de Dados no SQL Server Management Studio.

Os processos de extração e de criação produzem uma definição do DAC que especifica os objetos e os metadados. A definição do DAC é compilada em um pacote de DAC que é um arquivo que contém um manifesto de todas as definições de objetos e políticas incluídas no DAC. O pacote de DAC pode ser usado para:

  • Implantar a versão atual do DAC para instâncias de desenvolvimento, teste e produção do Mecanismo de Banco de Dados e do SQL Azure. Use o Assistente para Implantar Aplicativo da Camada de Dados para implantar uma nova instância do DAC. Use o Assistente para Atualizar o Aplicativo da Camada de Dados para atualizar uma instância existente do DAC que foi implantada usando uma versão mais antiga do DAC.

  • Inicie o desenvolvimento da próxima versão do DAC no Visual Studio importando o DAC em um novo projeto de Aplicativo da Camada de Dados do SQL Server no Visual Studio.

Aplicativos da camada de dados no processo de desenvolvimento

Os DACs são desenvolvidos usando projetos de DAC no Visual Studio. Um projeto de DAC habilita a integração estreita do desenvolvimento de objetos da camada de dados com o ambiente de desenvolvimento do aplicativo que está sendo codificado para usar os objetos. Um desenvolvedor de banco de dados cria o DAC usando um projeto de DAC no Visual Studio. O projeto de DAC pode ser integrado na solução de desenvolvimento geral do aplicativo no Visual Studio Team System. Enquanto os desenvolvedores do aplicativo escrevem o código do aplicativo, o desenvolvedor do banco de dados codifica as definições do objeto da camada de dados no DAC.

Para um novo aplicativo, o desenvolvedor do banco de dados cria o projeto de DAC e começa a adicionar objetos ao projeto à medida que eles são desenvolvidos. Ao iniciar o projeto para uma nova versão de um aplicativo existente, o desenvolvedor do banco de dados pode extrair um pacote de DAC do banco de dados atual usado pelo aplicativo e importá-lo no projeto de DAC.

O desenvolvedor pode adicionar estes elementos ao projeto de DAC:

  • Propriedades de DAC que definem as características do DAC. Por exemplo, cada DAC tem uma propriedade de nome do aplicativo e uma propriedade de versão cujos valores normalmente estão relacionados ao nome e ao número da versão do aplicativo associado.

  • Definições de todos os objetos do banco de dados usados pelo aplicativo, como esquemas, tabelas, exibições e procedimentos armazenados. Os DACs não dão suporte a todos os objetos disponíveis do SQL Server. Para obter mais informações, consulte Suporte de DAC para objetos e versões do SQL Server.

  • Definições dos objetos no nível de instância, como logons, associadas aos objetos do banco de dados e usadas pelo aplicativo.

  • Uma política de seleção de servidor que define as condições de pré-requisito condiciona que uma instância do Mecanismo de Banco de Dados deve hospedar o DAC. A política é definida usando a faceta Seleção de Servidor e pode avaliar condições, como a edição e o agrupamento padrão da instância.

  • Arquivos e scripts que podem ser incorporados no DAC quando ele é criado no Visual Studio. Exemplos são documentos do aplicativo e planos de geração de dados que especificam como criar dados de teste significativos ou scripts pré e pós-implantação.

Para testar, o desenvolvedor do banco de dados pode implantar o projeto de DAC em uma instância de teste do Mecanismo de Banco de Dados. Como alternativa, o desenvolvedor pode compilar o projeto de DAC, o que cria uma definição de DAC em um pacote de DAC. A definição do DAC contém os metadados de todos os elementos definidos no projeto de DAC. O pacote de DAC é um arquivo XML compactado que contém a definição do DAC e é usado para implantar ou atualizar um DAC. Os desenvolvedores e testadores podem usar o Assistente para Implantar Aplicativo da Camada de Dados para implantar o DAC em seus sistemas de teste.

Quando o desenvolvimento do aplicativo é concluído, o projeto de DAC é compilado para criar a versão de produção do pacote de DAC, da mesma maneira como o projeto de aplicativo é compilado para criar os arquivos executáveis do aplicativo. O pacote de DAC é passado aos administradores de banco de dados de produção, que o implantam nas instâncias do Mecanismo de Banco de Dados em execução na produção, ou no SQL Azure.

Depois que uma versão de DAC foi implantada na produção, o desenvolvimento poderá começar na próxima versão do DAC. O desenvolvedor de banco de dados cria uma nova versão do projeto de DAC com as definições de todos os objetos da camada de dados como eles existem naquela versão. Quando o projeto é compilado em um novo pacote de DAC, o mesmo pacote pode ser usado tanto para implantar uma nova instância do DAC como para atualizar uma instância existente para a nova versão. O assistente para Atualizar o Aplicativo da Camada de Dados compara o esquema da instância de DAC existente e o pacote de DAC e executa dinamicamente as ações necessárias para transformar a instância de DAC existente na nova versão do DAC.

Para obter mais informações sobre projetos de DAC na documentação do Visual Studio, consulte Creating and Managing Data-tier Applications.

Extraindo um DAC de um banco de dados

O Assistente para Extrair Aplicativo da Camada de Dados é usado para criar uma definição de DAC com base em um banco de dados existente. A definição do DAC contém os metadados que definem todos os objetos no banco de dados, qualquer logon que mapeie para entidades no banco de dados e o agrupamento de banco de dados e nível de compatibilidade. A definição do DAC não contém nenhum dado de usuário do banco de dados de origem. A definição do DAC é compilada em um arquivo de pacote de DAC.

O assistente só pode extrair objetos que têm suporte em aplicativos da camada de dados. Depois de especificar as propriedades, como o nome do DAC e a versão, o assistente carrega todos os objetos do banco de dados e verifica se eles têm suporte em um DAC. Em seguida, o assistente exibe uma página de resumo que agrupa os objetos em três categorias:

  • Objetos com uma entrada inválida não têm suporte em um DAC.

  • Objetos com um ícone de aviso amarelo têm suporte em um DAC, mas têm uma dependência em um objeto para o qual não há suporte.

  • Objetos com um ícone verde de sucesso têm suporte em um DAC e não têm dependências em objetos que não têm suporte em um DAC.

Se o assistente encontrar objetos que não tenham suporte em um DAC, ele os listará em um relatório de resumo e não criará o pacote de DAC. Se todos os objetos tiverem um ícone verde de sucesso, você poderá continuar a criar o pacote de DAC.

O pacote de DAC extraído pode ser usado para:

  • Importar o DAC em um projeto de DAC no Visual Studio, onde um desenvolvedor de banco de dados pode começar o desenvolvimento na próxima versão do DAC.

  • Implantar uma nova instância do DAC.

  • Atualizar uma versão do DAC implantada anteriormente.

Para obter mais informações sobre quais objetos têm suporte, consulte Suporte de DAC para objetos e versões do SQL Server.

Para obter mais informações sobre como iniciar o assistente, consulte Como extrair um DAC de um banco de dados.

Senhas de logon

Para melhorar a segurança, os logons de Autenticação do SQL Server são armazenados em um pacote de DAC sem nenhuma senha. Quando o pacote é implantado ou atualizado, o logon é criado como um logon desabilitado com uma senha gerada. Para habilitar os logons, faça logon usando um logon que tenha a permissão de ALTER ANY LOGIN e use ALTER LOGIN para habilitar o logon e atribuir uma nova senha que possa ser comunicada ao usuário. Isso não é necessário para logons de Autenticação do Windows uma vez que suas senhas não são gerenciadas pelo SQL Server.