Implantação de um banco de dados (C#)
por Scott Mitchell
A implantação de um aplicativo Web ASP.NET envolve a obtenção dos arquivos e recursos necessários do ambiente de desenvolvimento para o ambiente de produção. Para aplicativos Web controlados por dados, isso inclui o esquema e os dados do banco de dados. Este tutorial é o primeiro de uma série que explora as etapas necessárias para implantar com êxito o banco de dados do ambiente de desenvolvimento para produção.
Introdução
A implantação de um aplicativo Web ASP.NET envolve a obtenção dos arquivos e recursos necessários do ambiente de desenvolvimento para o ambiente de produção. Ao longo dos últimos seis tutoriais, analisamos a implantação de um aplicativo Web simples de Revisões de Livros. Esse site de demonstração era composto por vários recursos do lado do servidor - ASP.NET páginas, arquivos de configuração, um Web.sitemap
arquivo e assim por diante - juntamente com recursos do lado do cliente, como imagens e arquivos CSS. Mas e os aplicativos Web controlados por dados? Quais etapas extras devem ser executadas para implantar um aplicativo Web que usa um banco de dados?
Nos próximos tutoriais, abordaremos as etapas necessárias para implantar um aplicativo Web controlado por dados. Este tutorial começa examinando como obter o esquema e o conteúdo de um banco de dados do ambiente de desenvolvimento para o ambiente de produção, enquanto o tutorial subsequente analisa as alterações de configuração necessárias. A seguir, exploraremos os desafios de implantar um banco de dados que usa os Serviços de Aplicativo (Associação, Funções, Perfil e assim por diante).
Examinando o aplicativo Web Revisões de Livros Atualizados
Para demonstrar a implantação de um aplicativo Web controlado por dados, atualizei o aplicativo Web Book Reviews de um site simples e estático para um controlado por dados. Como antes, há duas versões do aplicativo no download deste tutorial: uma que usa o modelo do Projeto de Aplicativo Web e outra que usa o modelo projeto do site.
O aplicativo Web book reviews atualizado usa um banco de dados SQL Server Express Edition 2008, que é armazenado na pasta do App_Data
site (~/App_Data/Reviews.mdf
). Se você tiver SQL Server 2008 instalado no computador, a demonstração deverá ser executada sem erro. Se você tiver uma versão mais antiga do SQL Server poderá instalar o SQL Server 2008 Express Edition gratuito ou usar os scripts de banco de dados disponíveis neste download do tutorial para criar o banco de dados por conta própria.
O Reviews.mdf
banco de dados contém quatro tabelas:
Genres
– inclui um registro para cada gênero, como Tecnologia, Ficção e Negócios.Books
– inclui um registro para cada revisão, com colunas comoTitle
,GenreId
,ReviewDate
eReview
, entre outras.Authors
– inclui informações sobre cada autor que contribuiu para um livro revisado.BooksAuthors
- uma tabela de junção muitos para muitos que especifica quais autores escreveram quais livros.
A Figura 1 mostra um diagrama de ER dessas quatro tabelas.
Figura 1: o banco de dados do aplicativo Web Book Reviews é composto por quatro tabelas (clique para exibir a imagem em tamanho real)
A versão anterior do site revisões de livros tinha uma página ASP.NET separada para cada livro. Por exemplo, havia uma página chamada ~/Tech/TYASP35.aspx
que continha a revisão de Teach Yourself ASP.NET 3.5 em 24 Horas. Essa nova versão controlada por dados do site tem as revisões armazenadas no banco de dados e uma única página de ASP.NET, Review.aspx?ID=bookId, que exibe a revisão do livro especificado. Da mesma forma, há uma página Genre.aspx?ID=genreId que lista os livros revisados no gênero especificado.
As figuras 2 e 3 mostram as Genre.aspx
páginas e Review.aspx
em ação. Observe a URL na barra endereços de cada página. Na Figura 2, é Genre.aspx?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e. Como 85d164ba-1123-4c47-82a0-c8ec75de7e0e é o GenreId
valor do gênero Tecnologia, o título da página diz "Revisões de Tecnologia" e a lista com marcadores enumera essas críticas no site que se enquadram nesse gênero.
Figura 2: a página Gênero de Tecnologia (Clique para exibir imagem em tamanho real)
Figura 3: a revisão para ensinar a si mesmo ASP.NET 3,5 em 24 horas (clique para exibir a imagem em tamanho real)
O aplicativo Web Revisões de Livros também inclui uma seção de administração em que os administradores podem adicionar, editar e excluir gêneros, revisões e informações de autor. Atualmente, qualquer visitante pode acessar a seção de administração. Em um tutorial futuro, adicionaremos suporte para contas de usuário e permitiremos apenas usuários autorizados nas páginas de administração.
Se você baixar o aplicativo Revisões de Livros, tenha em mente que sua finalidade é demonstrar a implantação de um aplicativo controlado por dados. Ele não exibe práticas recomendadas no que diz respeito ao design do aplicativo. Por exemplo, não há uma DAL (Camada de Acesso a Dados) separada; as páginas ASP.NET se comunicam diretamente com o banco de dados por meio do controle SqlDataSource ou ADO.NET código em suas classes code-behind. Para obter uma visão mais detalhada da criação de aplicativos controlados por dados usando uma arquitetura em camadas, consulte meus tutoriais trabalhando com dados.
Bancos de dados em desenvolvimento versus produção
Ao iniciar o desenvolvimento em um aplicativo Web controlado por dados, você deve especificar um banco de dados cadeia de conexão, que fornece os detalhes do aplicativo sobre como se conectar ao banco de dados. Esse cadeia de conexão especifica, entre outras coisas, o servidor de banco de dados, o nome do banco de dados e as informações de segurança. Na maioria das vezes, o banco de dados usado pelo aplicativo durante o desenvolvimento é diferente do banco de dados usado quando está em produção. Há muitos benefícios de usar bancos de dados diferentes para desenvolvimento versus produção. Ter um banco de dados diferente em desenvolvimento significa que você não precisa se preocupar em modificar ou excluir dados ativos acidentalmente. Ele também permite que você coloque dados de teste fictícios ou faça alterações interruptivas no modelo de dados sem precisar se preocupar com os efeitos no aplicativo em produção. A desvantagem de ter um banco de dados diferente nos ambientes de desenvolvimento e produção é que, quando o aplicativo é implantado, o banco de dados e quaisquer alterações pertinentes no esquema ou nos dados do banco de dados também devem ser implantadas.
Antes da primeira implantação, há apenas uma instância do banco de dados e essa instância está no ambiente de desenvolvimento. Ao implantar o aplicativo em produção pela primeira vez, devemos não apenas copiar os arquivos necessários do lado do servidor e do lado do cliente, mas também copiar o banco de dados do ambiente de desenvolvimento para o ambiente de produção. É aqui que estamos agora com o aplicativo Web Revisões de Livros – o banco de dados reside na App_Data
pasta em nosso ambiente de desenvolvimento, mas ainda não foi enviado para o ambiente de produção.
Depois que o aplicativo tiver sido implantado, haverá duas cópias do banco de dados. À medida que o aplicativo amadurece, novos recursos podem ser adicionados, exigindo uma alteração no modelo de dados (como adicionar novas colunas a tabelas existentes, fazer alterações em colunas existentes, adicionar novas tabelas e assim por diante). Quando o aplicativo Web é implantado em seguida, as alterações aplicadas ao banco de dados no ambiente de desenvolvimento, uma vez que a última implantação deve ser aplicada ao banco de dados de produção. Algumas estratégias para gerenciar esse processo são discutidas em um tutorial futuro. Este tutorial se concentra na implantação de todo o banco de dados do ambiente de desenvolvimento para produção.
Implantando o banco de dados no ambiente de produção
O restante deste tutorial analisa como implantar o banco de dados do ambiente de desenvolvimento no ambiente de produção. Se você estiver acompanhando, precisará garantir que sua conta com seu provedor de host da Web inclua o suporte ao banco de dados do Microsoft SQL Server. Você também precisará ter algumas informações em mãos, ou seja, o nome do servidor de banco de dados, o nome do banco de dados e o nome de usuário e a senha usados para se conectar ao banco de dados.
Conforme observado anteriormente neste tutorial, o banco de dados do site revisões de livros é um banco de dados do SQL Server Express Edition 2008 armazenado na App_Data
pasta. Seria lógico que implantar esse banco de dados seria tão simples quanto copiar a App_Data
pasta do ambiente de desenvolvimento para o ambiente de produção. No entanto, a maioria dos provedores de host da Web não dá suporte à hospedagem de bancos de dados na App_Data
pasta por motivos de segurança. Em vez disso, os hosts Web fornecem uma conta em um servidor de banco de dados SQL Server dentro de seu ambiente. Implantar o banco de dados do seu ambiente de desenvolvimento no ambiente de produção requer que o banco de dados seja registrado no servidor de banco de dados do host Web.
Então, como você obtém seu banco de dados do ambiente de desenvolvimento para o ambiente de produção? Há algumas maneiras de fazer isso dependendo de quais serviços seu host web oferece. Com alguns hosts, como DiscountASP.NET, você pode ftp um backup do banco de dados ou o arquivo real .mdf
para o seu site e, a partir do Painel de Controle, restaurar o arquivo de backup ou anexar o .mdf
arquivo ao servidor de banco de dados SQL Server. Com essas ferramentas, implantar o banco de dados é tão simples quanto copiar a App_Data
pasta para o ambiente de produção e, em seguida, anexá-la por meio do Painel de Controle. Essa talvez seja a maneira mais fácil e rápida de publicar seu banco de dados pela primeira vez.
Outra abordagem é usar o Assistente de Publicação de Banco de Dados. O Assistente de Publicação de Banco de Dados é um aplicativo da área de trabalho do Windows que gerará os comandos SQL para criar o esquema do banco de dados – tabelas, procedimentos armazenados, exibições, funções definidas pelo usuário e assim por diante – e, opcionalmente, os dados em suas tabelas. Em seguida, você pode se conectar ao servidor de banco de dados do provedor de host Web por meio de SQL Server Management Studio e, em seguida, executar esse script para duplicar o banco de dados em produção. Melhor ainda, se o provedor de host da Web der suporte aos Serviços de Publicação de Banco de Dados da Microsoft, você poderá ter o script gerado pelo Assistente de Publicação de Banco de Dados executado automaticamente no servidor de banco de dados em seu nome. Como o Assistente de Publicação de Banco de Dados gera um script que cria o esquema e os dados do banco de dados, ele funcionará independentemente de seu provedor de host da Web oferecer recursos como anexar um arquivo carregado .mdf
.
Gerando os comandos SQL para criar o esquema de banco de dados e os dados usando o Assistente de Publicação de Banco de Dados
Vamos usar o Assistente de Publicação de Banco de Dados para implantar o banco de dados Revisões de Livros em produção. Se você estiver usando o Visual Studio 2008 ou posterior, o Assistente de Publicação de Banco de Dados já está instalado.
Abra o Visual Studio e navegue até o Reviews.mdf
banco de dados. Se você estiver usando o Visual Web Developer, vá para a Explorer de Banco de Dados; se estiver usando o Visual Studio, use a Explorer do Servidor. A Figura 4 mostra o Reviews.mdf
banco de dados no banco de dados Explorer no Visual Web Developer. Como mostra a Figura 4, o Reviews.mdf
banco de dados é composto por quatro tabelas, três procedimentos armazenados e uma função definida pelo usuário.
Figura 4: localize o banco de dados no banco de dados Explorer ou Explorer do servidor (Clique para exibir a imagem em tamanho real)
Clique com o botão direito do mouse no nome do banco de dados e escolha a opção "Publicar no provedor" no menu de contexto. Isso inicia o Assistente de Publicação de Banco de Dados (consulte a Figura 5). Clique em Avançar para passar pela tela inicial.
Figura 5: Tela inicial do Assistente de Publicação de Banco de Dados (clique para exibir a imagem em tamanho real)
A segunda tela do assistente lista os bancos de dados acessíveis ao Assistente de Publicação de Banco de Dados e permite que você escolha se deseja criar script de todos os objetos no banco de dados selecionado ou escolher quais objetos devem ser roteirizados. Selecione o banco de dados apropriado e deixe a opção "Criar script de todos os objetos no banco de dados selecionado" marcada.
Observação
Se você receber o erro "Não há objetos no database databaseName dos tipos que podem ser gerados por este assistente" ao clicar em Avançar na tela mostrada na Figura 6, verifique se o caminho para o arquivo de banco de dados não é muito longo. Foi descoberto que esse erro pode surgir se o caminho para o arquivo de banco de dados for muito longo.
Figura 6: Tela inicial do Assistente de Publicação de Banco de Dados (clique para exibir a imagem em tamanho real)
Na próxima tela, você pode gerar um arquivo de script ou, se o host da Web der suporte a ele, publique o banco de dados diretamente no servidor de banco de dados do provedor de host web. Como mostra a Figura 7, estou tendo o script gravado no arquivo C:\REVIEWS.MDF.sql
.
Figura 7: Criar script do banco de dados para um arquivo ou publicá-lo diretamente no provedor de host da Web (clique para exibir a imagem em tamanho real)
A tela subsequente solicita uma variedade de opções de script. Você pode especificar se o script deve incluir instruções drop para remover esses objetos existentes. Isso usa como padrão True, o que é bom ao implantar um banco de dados pela primeira vez. Você também pode especificar se o banco de dados de destino é SQL Server 2000, SQL Server 2005 ou SQL Server 2008. Por fim, você pode indicar se o esquema e os dados devem ser scripts, apenas os dados ou apenas o esquema. O esquema é a coleção de objetos de banco de dados, as tabelas, os procedimentos armazenados, as exibições e assim por diante. Os dados são as informações que residem nas tabelas.
Como ilustra a Figura 8, tenho o assistente configurado para remover objetos de banco de dados existentes, gerar script para um banco de dados SQL Server 2008 e publicar o esquema e os dados.
Figura 8: especificar as opções de publicação (clique para exibir a imagem em tamanho real)
As duas últimas telas resumem as ações que estão prestes a ser executadas e exibem o status do script. O resultado líquido da execução do assistente é que temos um arquivo de script que contém os comandos SQL necessários para criar o banco de dados em produção e preenchê-lo com os mesmos dados que no desenvolvimento.
Executando os comandos SQL no banco de dados de ambiente de produção
Agora que temos o script que contém os comandos SQL para criar o banco de dados e seus dados, tudo o que resta é executar o script no banco de dados de produção. Alguns provedores de host da Web oferecem uma caixa de texto em seus Painel de Controle em que você pode inserir comandos SQL para executar em seu banco de dados. Se você tiver um arquivo de script muito grande, essa opção poderá não funcionar (o REVIEWS.MDF.sql
arquivo de script tem mais de 425 KB de tamanho, por exemplo).
Uma abordagem melhor é conectar-se diretamente ao servidor de banco de dados de produção usando SQL Server Management Studio (SSMS). Se você tiver uma Edição não Expressa de SQL Server instalada no computador, provavelmente já terá o SSMS instalado. Caso contrário, você pode baixar e instalar uma cópia gratuita do SQL Server Management Studio Express Edition.
Inicie o SSMS e conecte-se ao servidor de banco de dados do host Web usando as informações fornecidas pelo provedor de host da Web.
Figura 9: Conectar-se ao Servidor de Banco de Dados do Provedor de Host Web (clique para exibir a imagem em tamanho real)
Expanda a guia Bancos de Dados e localize seu banco de dados. Clique no botão Nova Consulta no canto superior esquerdo da Barra de Ferramentas, cole os comandos SQL do arquivo de script criado pelo Assistente de Publicação de Banco de Dados e clique no botão Executar para executar esses comandos no servidor de banco de dados de produção. Se o arquivo de script for especialmente grande, poderá levar vários minutos para executar os comandos.
Figura 10: Conectar-se ao Servidor de Banco de Dados do Provedor de Host Web (clique para exibir a imagem em tamanho real)
Isso é tudo o que há para ele! Neste ponto, o banco de dados de desenvolvimento foi duplicado para produção. Se você Atualizar o banco de dados no SSMS, deverá ver os novos objetos de banco de dados. A Figura 11 mostra as tabelas do banco de dados de produção, os procedimentos armazenados e as funções definidas pelo usuário, que espelho as do banco de dados de desenvolvimento. E como instruímos o Assistente de Publicação de Banco de Dados a publicar os dados, as tabelas do banco de dados de produção têm os mesmos dados que as tabelas do banco de dados de desenvolvimento no momento em que o assistente foi executado. A Figura 12 mostra os dados na Books
tabela no banco de dados de produção.
Figura 11: os objetos de banco de dados foram duplicados no banco de dados de produção (clique para exibir a imagem em tamanho real)
Figura 12: o banco de dados de produção contém os mesmos dados que no Banco de Dados de Desenvolvimento (clique para exibir a imagem em tamanho real)
Neste ponto, implantamos apenas o banco de dados de desenvolvimento para produção. Ainda não examinamos a implantação do próprio aplicativo Web ou examinamos quais alterações de configuração são necessárias para que o aplicativo em produção use o banco de dados de produção. Abordaremos esses problemas no próximo tutorial!
Resumo
A implantação de um aplicativo Web controlado por dados requer a cópia do banco de dados usado durante o desenvolvimento para o ambiente de produção. Muitos provedores de host Web oferecem ferramentas para simplificar o processo de implantação de um banco de dados. Por exemplo, com DiscountASP.NET você pode ftp seu arquivo de banco de dados .mdf
(ou um backup) e, em seguida, anexar o banco de dados ao servidor de banco de dados do Painel de Controle. Outra opção que funciona independentemente dos recursos que seu provedor de host web oferece é a ferramenta Assistente de Publicação de Banco de Dados da Microsoft, que gera um script de comandos SQL para criar o esquema e os dados do banco de dados de desenvolvimento. Depois que esse script for gerado, você poderá executá-lo no banco de dados de produção.
Agora que o banco de dados do aplicativo Web Revisões de Livros está em produção, podemos implantar o aplicativo. No entanto, as informações de configuração do aplicativo Web especificam o cadeia de conexão para o banco de dados e essa cadeia de conexão faz referência ao banco de dados de desenvolvimento. Precisamos atualizar essas informações cadeia de conexão ao implantar o site em produção. O próximo tutorial analisa essas diferenças de configuração e percorre as etapas necessárias para publicar o site de Revisões de Livros controlado por dados em produção.
Programação feliz!
Leitura Adicional
Para obter mais informações sobre os tópicos discutidos neste tutorial, consulte o seguinte recurso: