Implantação do bancos de dados de associação em ambientes corporativos
por Jason Lee
Observação
Desde que este artigo foi escrito, os provedores de associação ASP.NET foram substituídos pelo ASP.NET Identity. É altamente recomendável atualizar aplicativos para usar a plataforma ASP.NET Identity em vez dos provedores de associação apresentados no momento em que este artigo foi escrito. ASP.NET Identity tem várias vantagens em relação ao sistema de associação ASP.NET, incluindo :
- Melhor desempenho
- Extensibilidade e testabilidade aprimoradas
- Suporte para OAuth, OpenID Connect e autenticação de dois fatores
- Suporte à identidade baseada em declarações
- Melhor interoperabilidade com o ASP.Net Core
Este tópico explica as principais considerações e desafios que você precisará superar ao provisionar ASP.NET bancos de dados de serviços de aplicativo (mais comumente chamados de bancos de dados de associação) em ambientes de teste, preparo ou produção. Ele também descreve as abordagens que você pode usar para enfrentar esses desafios.
Este tópico faz parte de uma série de tutoriais baseados nos requisitos de implantação empresarial de uma empresa fictícia chamada Fabrikam, Inc. Esta série de tutoriais usa uma solução de exemplo, a solução do Contact Manager, para representar um aplicativo Web com um nível realista de complexidade, incluindo um aplicativo ASP.NET MVC 3, um serviço WCF (Windows Communication Foundation) e um projeto de banco de dados.
O método de implantação no centro desses tutoriais baseia-se na abordagem de arquivo de projeto dividido descrita em Noções básicas sobre o arquivo de projeto, na qual o processo de build é controlado por dois arquivos de projeto, um contendo instruções de build que se aplicam a cada ambiente de destino e outro que contém configurações de build e implantação específicas do ambiente. No momento da compilação, o arquivo de projeto específico do ambiente é mesclado no arquivo de projeto independente do ambiente para formar um conjunto completo de instruções de build.
Quais são os problemas ao implantar um banco de dados de associação?
Na maioria dos casos, quando você elabora uma estratégia de implantação para um banco de dados, a primeira coisa que você precisa considerar é quais dados você deseja implantar. Em um ambiente de desenvolvimento ou teste, talvez você queira implantar dados de conta de usuário para facilitar testes rápidos e fáceis. Em um ambiente de preparo ou produção, é muito improvável que você queira implantar dados da conta de usuário.
Infelizmente, ASP.NET bancos de dados de associação apresentam alguns desafios específicos que tornam essa decisão muito mais complexa:
- Uma implantação somente de esquema deixará o banco de dados de associação em um estado não operacional. Isso ocorre porque o banco de dados de associação inclui alguns dados de configuração (na tabela aspnet_SchemaVersions ) que o banco de dados requer para funcionar. Dessa forma, se você executar uma implantação somente de esquema do banco de dados de associação para excluir dados da conta de usuário, precisará executar um script pós-implantação para adicionar os dados de configuração essenciais.
- Dependendo de como o banco de dados de associação está configurado, o provedor de associação pode usar a chave do computador para criptografar senhas e armazená-las no banco de dados. Nesse caso, todos os dados da conta de usuário implantados com o banco de dados se tornarão inutilizáveis no servidor de destino. Por esse motivo, a implantação de dados da conta de usuário não é um cenário com suporte.
Escolhendo uma estratégia de banco de dados de associação
Use estas diretrizes ao escolher como provisionar um banco de dados de associação em um ambiente de servidor corporativo:
- Sempre que possível, não implante bancos de dados de associação. Em vez disso, crie o banco de dados de associação manualmente no servidor de banco de dados de destino. Se você ainda não personalizou seu esquema de banco de dados de associação, basta criar um novo in situ no destino usando a Ferramenta de Registro de ASP.NET SQL Server (aspnet_regsql.exe).
- Se você não tiver outra opção a não ser implantar um banco de dados de associação, por exemplo, se tiver feito modificações extensivas no esquema de banco de dados, deverá executar uma implantação somente de esquema do banco de dados de associação, excluir dados da conta de usuário e, em seguida, executar um script pós-implantação para adicionar os dados de configuração necessários. Você pode encontrar diretrizes amplas sobre essas abordagens em Como implantar o banco de dados de associação ASP.NET sem incluir contas de usuário.
É importante lembrar que o esquema do banco de dados de associação provavelmente será bastante estático. Mesmo que você tenha personalizado o banco de dados de associação, é improvável que você precise atualizar o esquema regularmente. Isso não mudará com a mesma frequência que o código em um aplicativo Web ou em um projeto de banco de dados. Dessa forma, você não deve precisar incluir o banco de dados de associação em nenhum processo de implantação automatizado ou de etapa única.
Usando o VSDBCMD para atualizar um esquema de banco de dados de associação
Se você modificar a estrutura do banco de dados de associação após sua primeira implantação, talvez não queira usar a Ferramenta de Implantação da Web (Implantação da Web) do IIS (Serviços de Informações da Internet) para reimplantar o banco de dados. A funcionalidade de implantação de banco de dados na Implantação da Web não inclui a capacidade de fazer atualizações diferenciais em um banco de dados de destino. Em vez disso, a Implantação da Web deve remover e recriar o banco de dados. Isso significa que você perde todos os dados de conta de usuário existentes, que normalmente são indesejáveis em ambientes de preparo ou produção.
A alternativa é usar o utilitário VSDBCMD para atualizar o esquema do banco de dados de destino. O VSDBCMD inclui dois recursos importantes. Primeiro, ele pode importar o esquema de um banco de dados existente para um arquivo .dbschema. Em segundo lugar, ele pode implantar um arquivo .dbschema em um banco de dados existente como uma atualização diferencial, o que significa que ele só faz as alterações necessárias para atualizar o banco de dados de destino e você não perde nenhum dado.
Você pode usar estas etapas de alto nível para atualizar um esquema de banco de dados de associação:
- Use a ação De importação do VSDBCMD para gerar um arquivo .dbschema para o banco de dados de associação de origem. Este procedimento é descrito em Como importar um esquema de um prompt de comando.
- Use a ação Implantar VSDBCMD para implantar o arquivo .dbschema no banco de dados de associação de destino. Este procedimento é descrito em Referência de linha de comando para VSDBCMD.EXE (implantação e importação de esquema).
Conclusão
Este tópico descreveu alguns dos desafios que você pode enfrentar quando precisa provisionar ASP.NET bancos de dados de associação em vários ambientes de destino. Em particular, ele explicou por que as implantações somente de esquema deixarão o banco de dados de associação em um estado não operacional e por que não há suporte para a implantação de dados da conta de usuário. O tópico também apresentou diretrizes sobre como provisionar, implantar e atualizar bancos de dados de associação em diferentes cenários.
Leitura Adicional
Para obter mais diretrizes e exemplos de como usar o VSDBCMD, consulte Referência de linha de comando para VSDBCMD.EXE (implantação e importação de esquema) e Como importar um esquema de um prompt de comando. Para obter mais informações sobre como usar aspnet_regsql.exe para criar bancos de dados de associação, consulte Ferramenta de Registro de ASP.NET SQL Server (aspnet_regsql.exe). Para obter diretrizes mais gerais sobre como implantar bancos de dados de associação, consulte Como implantar o banco de dados de associação ASP.NET sem incluir contas de usuário.