Compartilhar via


Implantando um aplicativo Web ASP.NET com SQL Server Compact usando o Visual Studio ou o Visual Web Developer: Migrando para SQL Server – 10 de 12

por Tom Dykstra

Baixar o Projeto Inicial

Esta série de tutoriais mostra como implantar (publicar) um projeto de aplicativo Web ASP.NET que inclui um banco de dados SQL Server Compact usando o Visual Studio 2012 RC ou Visual Studio Express RC 2012 para Web. Você também pode usar o Visual Studio 2010 se instalar a Atualização de Publicação na Web. Para obter uma introdução à série, consulte o primeiro tutorial da série.

Para obter um tutorial que mostra os recursos de implantação introduzidos após o lançamento do RC do Visual Studio 2012, mostra como implantar SQL Server edições diferentes de SQL Server Compact e mostra como implantar em Serviço de Aplicativo do Azure Aplicativos Web, consulte ASP.NET Implantação da Web usando o Visual Estúdio.

Visão geral

Este tutorial mostra como migrar de SQL Server Compact para SQL Server. Um motivo pelo qual você pode querer fazer isso é aproveitar SQL Server recursos que SQL Server Compact não dá suporte, como procedimentos armazenados, gatilhos, exibições ou replicação. Para obter mais informações sobre as diferenças entre SQL Server Compact e SQL Server, consulte o tutorial Implantando SQL Server Compact.

SQL Server Express versus SQL Server completo para Desenvolvimento

Depois de decidir atualizar para SQL Server, convém usar SQL Server ou SQL Server Express em seus ambientes de desenvolvimento e teste. Além das diferenças no suporte à ferramenta e nos recursos do mecanismo de banco de dados, há diferenças nas implementações do provedor entre SQL Server Compact e outras versões do SQL Server. Essas diferenças podem fazer com que o mesmo código gere resultados diferentes. Portanto, se você decidir manter SQL Server Compact como seu banco de dados de desenvolvimento, deverá testar completamente seu site em SQL Server ou SQL Server Express em um ambiente de teste antes de cada implantação em produção.

Ao contrário SQL Server Compact, SQL Server Express é essencialmente o mesmo mecanismo de banco de dados e usa o mesmo provedor .NET que o SQL Server completo. Ao testar com SQL Server Express, você pode estar confiante em obter os mesmos resultados que você fará com SQL Server. Você pode usar a maioria das mesmas ferramentas de banco de dados com SQL Server Express que você pode usar com SQL Server (uma exceção notável sendo SQL Server Profiler) e ele dá suporte a outros recursos de SQL Server como procedimentos armazenados, exibições, gatilhos e replicação. (Normalmente, você precisa usar SQL Server completos em um site de produção. SQL Server Express pode ser executado em um ambiente de hospedagem compartilhado, mas não foi projetado para isso, e muitos provedores de hospedagem não dão suporte a ele.)

Se você estiver usando o Visual Studio 2012, normalmente escolherá SQL Server Express LocalDB para seu ambiente de desenvolvimento, pois é isso que é instalado por padrão com o Visual Studio. No entanto, o LocalDB não funciona no IIS, portanto, para seu ambiente de teste, você precisa usar SQL Server ou SQL Server Express.

Combinando bancos de dados versus mantendo-os separados

O aplicativo da Contoso University tem dois bancos de dados SQL Server Compact: o banco de dados de associação (aspnet.sdf) e o banco de dados de aplicativo (School.sdf). Ao migrar, você pode migrar esses bancos de dados para dois bancos de dados separados ou para um único banco de dados. Talvez você queira combiná-los para facilitar as junções de banco de dados entre o banco de dados do aplicativo e o banco de dados de associação. Seu plano de hospedagem também pode fornecer um motivo para combiná-los. Por exemplo, o provedor de hospedagem pode cobrar mais por vários bancos de dados ou pode até não permitir mais de um banco de dados. Esse é o caso da conta de hospedagem do Cytanium Lite usada para este tutorial, que permite apenas um banco de dados SQL Server.

Neste tutorial, você migrará seus dois bancos de dados dessa maneira:

  • Migre para dois bancos de dados LocalDB no ambiente de desenvolvimento.
  • Migre para dois bancos de dados SQL Server Express no ambiente de teste.
  • Migre para um banco de dados de SQL Server completo combinado no ambiente de produção.

Lembrete: se você receber uma mensagem de erro ou algo não funcionar à medida que passar pelo tutorial, certifique-se de marcar página de solução de problemas.

Instalando SQL Server Express

SQL Server Express é instalado automaticamente por padrão com o Visual Studio 2010, mas por padrão ele não é instalado com o Visual Studio 2012. Para instalar o SQL Server 2012 Express, clique no link a seguir

Escolha ENU/x64/SQLEXPR_x64_ENU.exe ou ENU/x86/SQLEXPR_x86_ENU.exee, no assistente de instalação, aceite as configurações padrão. Para obter mais informações sobre as opções de instalação, consulte Instalar SQL Server 2012 por meio do Assistente de Instalação (Instalação).

Criando bancos de dados SQL Server Express para o ambiente de teste

A próxima etapa é criar a associação de ASP.NET e bancos de dados de escola.

No menu Exibir, selecione Servidor Explorer (Explorer de Banco de Dados no Desenvolvedor Web Visual) e clique com o botão direito do mouse em Connections de Dados e selecione Criar Novo Banco de Dados SQL Server.

Selecting_Create_New_SQL_Server_Database

Na caixa de diálogo Criar Novo banco de dados SQL Server, insira ".\SQLExpress" na caixa Nome do servidor e "aspnet-Test" na caixa Novo nome do banco de dados e clique em OK.

Create_New_SQL_Server_Database_aspnet

Siga o mesmo procedimento para criar um novo banco de dados do SQL Server Express School chamado "School-Test".

(Você está acrescentando "Teste" a esses nomes de banco de dados porque, posteriormente, criará uma instância adicional de cada banco de dados para o ambiente de desenvolvimento e precisará ser capaz de diferenciar os dois conjuntos de bancos de dados.)

O Explorer do servidor agora mostra os dois novos bancos de dados.

New_databases_in_Server_Explorer

Criando um script de concessão para os novos bancos de dados

Quando o aplicativo é executado no IIS no computador de desenvolvimento, o aplicativo acessa o banco de dados usando as credenciais do pool de aplicativos padrão. No entanto, por padrão, a identidade do pool de aplicativos não tem permissão para abrir os bancos de dados. Portanto, você precisa executar um script para conceder essa permissão. Nesta seção, você criará o script que será executado posteriormente para garantir que o aplicativo possa abrir os bancos de dados quando ele for executado no IIS.

Na pasta SolutionFiles da solução que você criou no tutorial Implantando no Ambiente de Produção , crie um novo arquivo SQL chamado Grant.sql. Copie os seguintes comandos SQL no arquivo e salve e feche o arquivo:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Observação

Esse script foi projetado para funcionar com SQL Server 2008 e com as configurações do IIS no Windows 7, conforme são especificadas neste tutorial. Se você estiver usando uma versão diferente do SQL Server ou do Windows ou se configurar o IIS em seu computador de forma diferente, as alterações nesse script poderão ser necessárias. Para obter mais informações sobre scripts SQL Server, consulte SQL Server Manuais Online.

Observação

Observação de segurança Esse script fornece permissões db_owner para o usuário que acessa o banco de dados em tempo de execução, que é o que você terá no ambiente de produção. Em alguns cenários, talvez você queira especificar um usuário que tenha permissões completas de atualização de esquema de banco de dados somente para implantação e especifique para o tempo de execução um usuário diferente que tenha permissões apenas para ler e gravar dados. Para obter mais informações, consulte Revisão das alterações automáticas de Web.config para Migrações do Code First em Implantar no IIS como um ambiente de teste.

Configurando a implantação de banco de dados para o ambiente de teste

Em seguida, você configurará o Visual Studio para que ele execute as seguintes tarefas para cada banco de dados:

  • Gere um script SQL que cria a estrutura do banco de dados de origem (tabelas, colunas, restrições etc.) no banco de dados de destino.
  • Gere um script SQL que insere os dados do banco de dados de origem nas tabelas no banco de dados de destino.
  • Execute os scripts gerados e o script Grant que você criou no banco de dados de destino.

Abra a janela Propriedades do Projeto e selecione a guia Pacote/Publicar SQL .

Verifique se Ativo (Versão) ou Versão está selecionado na lista suspensa Configuração .

Clique em Habilitar esta Página.

Package_Publish_SQL_tab_Enable_This_page

A guia SQL Pacote/Publicação normalmente está desabilitada porque especifica um método de implantação herdado. Para a maioria dos cenários, você deve configurar a implantação de banco de dados no assistente Publicar Web . Migrar de SQL Server Compact para SQL Server ou SQL Server Express é um caso especial para o qual esse método é uma boa opção.

Clique em Importar do Web.config.

Selecting_Import_from_Web.config

O Visual Studio procura cadeias de conexão no arquivo Web.config, localiza uma para o banco de dados de associação e outra para o banco de dados School e adiciona uma linha correspondente a cada cadeia de conexão na tabela Entradas de Banco de Dados. As cadeias de conexão encontradas são para os bancos de dados SQL Server Compact existentes e a próxima etapa será configurar como e onde implantar esses bancos de dados.

Insira as configurações de implantação do banco de dados na seção Detalhes da Entrada do Banco de Dados abaixo da tabela Entradas do Banco de Dados . As configurações mostradas na seção Detalhes da Entrada do Banco de Dados pertencem a qualquer linha na tabela Entradas de Banco de Dados selecionada, conforme mostrado na ilustração a seguir.

Database_Entry_Details_section_of_Package_Publish_SQL_tab

Definindo configurações de implantação para o banco de dados de associação

Selecione a linha DefaultConnection-Deployment na tabela Entradas de Banco de Dados para definir as configurações que se aplicam ao banco de dados de associação.

Em Cadeia de conexão para o banco de dados de destino, insira um cadeia de conexão que aponte para o novo banco de dados de associação de SQL Server Express. Você pode obter as cadeia de conexão necessárias no Explorer do Servidor. No Explorer do Servidor, expanda Connections de Dados e selecione o banco de dados aspnetTest e, na janela Propriedades, copie o valor cadeia de conexão.

aspnet_connection_string_in_Server_Explorer

A mesma cadeia de conexão é reproduzida aqui:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

Copie e cole esse cadeia de conexão na cadeia de conexão do banco de dados de destino na guia SQL Pacote/Publicação.

Verifique se o esquema e/ou pull de dados de um banco de dados existente está selecionado. Isso é o que faz com que os scripts SQL sejam gerados e executados automaticamente no banco de dados de destino.

A cadeia de conexão para o valor do banco de dados de origem é extraída do arquivo Web.config e aponta para o banco de dados de SQL Server Compact de desenvolvimento. Esse é o banco de dados de origem que será usado para gerar os scripts que serão executados posteriormente no banco de dados de destino. Como você deseja implantar a versão de produção do banco de dados, altere "aspnet-Dev.sdf" para "aspnet-Prod.sdf".

Altere as opções de script de banco de dados de Esquema Somente para Esquema e dados, pois você deseja copiar seus dados (contas de usuário e funções), bem como a estrutura do banco de dados.

Para configurar a implantação para executar os scripts de concessão criados anteriormente, você precisa adicioná-los à seção Scripts de Banco de Dados . Clique em Adicionar Script e, na caixa de diálogo Adicionar Scripts SQL , navegue até a pasta em que você armazenou o script de concessão (esta é a pasta que contém o arquivo de solução). Selecione o arquivo chamado Grant.sql e clique em Abrir.

Select_File_dialog_box_grant_script

As configurações da linha DefaultConnection-Deployment em Entradas de Banco de Dados agora se parecem com a ilustração a seguir:

Database_Entry_Details_for_DefaultConnection_Test

Definindo configurações de implantação para o banco de dados da escola

Em seguida, selecione a linha SchoolContext-Deployment na tabela Entradas de Banco de Dados para definir as configurações de implantação do banco de dados School.

Você pode usar o mesmo método usado anteriormente para obter o cadeia de conexão para o novo banco de dados SQL Server Express. Copie esse cadeia de conexão na cadeia de conexão do banco de dados de destino na guia Pacote/Publicar SQL.

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

Verifique se o esquema e/ou pull de dados de um banco de dados existente está selecionado.

A cadeia de conexão para o valor do banco de dados de origem é extraída do arquivo Web.config e aponta para o banco de dados de SQL Server Compact de desenvolvimento. Altere "School-Dev.sdf" para "School-Prod.sdf" para implantar a versão de produção do banco de dados. (Você nunca criou um arquivo School-Prod.sdf na pasta App_Data, portanto, copiará esse arquivo do ambiente de teste para a pasta App_Data na pasta do projeto ContosoUniversity mais tarde.)

Altere as opções de script de banco dedados para Esquema e dados.

Você também deseja executar o script para conceder permissão de leitura e gravação para esse banco de dados à identidade do pool de aplicativos, portanto, adicione o arquivo de script Grant.sql como você fez para o banco de dados de associação.

Quando terminar, as configurações da linha SchoolContext-Deployment em Entradas de Banco de Dados são semelhantes à ilustração a seguir:

Database_Entry_Details_for_SchoolContext_Test

Salve as alterações na guia Pacote/Publicar SQL .

Copie o arquivo School-Prod.sdf da pasta c:\inetpub\wwwroot\ContosoUniversity\App_Data para a pasta App_Data no projeto ContosoUniversity.

Especificando o modo transacionado para o script de concessão

O processo de implantação gera scripts que implantam o esquema e os dados do banco de dados. Por padrão, esses scripts são executados em uma transação. No entanto, scripts personalizados (como os scripts de concessão) por padrão não são executados em uma transação. Se o processo de implantação misturar modos de transação, você poderá receber um erro de tempo limite quando os scripts forem executados durante a implantação. Nesta seção, você edita o arquivo de projeto para configurar os scripts personalizados a serem executados em uma transação.

Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto ContosoUniversity e selecione Descarregar Projeto.

Unload_Project_in_Solution_Explorer

Em seguida, clique com o botão direito do mouse no projeto novamente e selecione Editar ContosoUniversity.csproj.

Edit_Project_in_Solution_Explorer

O editor do Visual Studio mostra o conteúdo XML do arquivo de projeto. Observe que há vários PropertyGroup elementos. (Na imagem, o conteúdo dos PropertyGroup elementos foi omitido.)

Janela do editor de arquivos do projeto

O primeiro, que não Condition tem atributo, é para configurações que se aplicam independentemente da configuração de build. Um PropertyGroup elemento se aplica apenas à configuração de build de depuração (observe o Condition atributo), um se aplica apenas à configuração de build de versão e outro se aplica apenas à configuração de build de teste. Dentro do PropertyGroup elemento para a configuração de build de versão, você verá um PublishDatabaseSettings elemento que contém as configurações inseridas na guia Pacote/Publicar SQL . Há um Object elemento que corresponde a cada um dos scripts de concessão especificados (observe as duas instâncias de "Grant.sql"). Por padrão, o Transacted atributo do Source elemento para cada script de concessão é False.

Transacted_false

Altere o valor do Transacted atributo do Source elemento para True.

Transacted_true

Salve e feche o arquivo de projeto e clique com o botão direito do mouse no projeto em Gerenciador de Soluções e selecione Recarregar Projeto.

Reload_project

Configurando transformações de Web.Config para as cadeias de conexão

As cadeias de conexão para os novos bancos de dados do SQL Express que você inseriu na guia Pacote/Publicar SQL são usadas pela Implantação da Web somente para atualizar o banco de dados de destino durante a implantação. Você ainda precisa configurar transformaçõesWeb.config para que as cadeias de conexão no arquivo Web.config implantado apontem para os novos bancos de dados SQL Server Express. (Quando você usa a guia Pacote/Publicar SQL , não é possível configurar cadeias de conexão no perfil de publicação.)

Abra Web.Test.config e substitua o connectionStrings elemento pelo connectionStrings elemento no exemplo a seguir. (Certifique-se de copiar apenas o elemento connectionStrings, não o código ao redor mostrado aqui para fornecer contexto.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Esse código faz com que os connectionString atributos e providerName de cada add elemento sejam substituídos no arquivo Web.config implantado. Essas cadeias de conexão não são idênticas às que você inseriu na guia Pacote/Publicar SQL. A configuração "MultipleActiveResultSets=True" foi adicionada a eles porque é necessária para o Entity Framework e o Provedores Universais.

Instalando SQL Server Compact

O pacote NuGet SqlServerCompact fornece os assemblies do mecanismo de banco de dados SQL Server Compact para o aplicativo da Contoso University. Mas agora não é o aplicativo, mas a Implantação da Web que deve ser capaz de ler os bancos de dados SQL Server Compact, a fim de criar scripts a serem executados nos bancos de dados SQL Server. Para habilitar a Implantação da Web para ler bancos de dados SQL Server Compact, instale SQL Server Compact no computador de desenvolvimento usando o seguinte link: Microsoft SQL Server Compact 4.0 SP1.

Implantando no ambiente de teste

Para publicar no ambiente de teste, você precisa criar um perfil de publicação configurado para usar a guia Pacote/Publicar SQL para publicação de banco de dados em vez das configurações do banco de dados de perfil de publicação.

Primeiro, exclua o perfil de Teste existente.

Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto ContosoUniversity e clique em Publicar.

Selecione a guia Perfil .

Clique em Gerenciar Perfis.

Selecione Testar, clique em Remover e, em seguida, clique em Fechar.

Feche o assistente Publicar Web para salvar essa alteração.

Em seguida, crie um novo perfil de teste e use-o para publicar o projeto.

Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto ContosoUniversity e clique em Publicar.

Selecione a guia Perfil .

Selecione <Novo...> na lista suspensa e insira "Testar" como o nome do perfil.

Na caixa URL do Serviço , insira localhost.

Na caixa Site/aplicativo , insira Site Padrão/ContosoUniversity.

Na caixa URL de destino , insira http://localhost/ContosoUniversity/.

Clique em Próximo.

A guia Configurações avisa que a guia Pacote/Publicar SQL foi configurada e oferece a oportunidade de substituí-las clicando em habilitar as novas melhorias de publicação de banco de dados. Para essa implantação, você não deseja substituir as configurações da guia Pacote/Publicar SQL , portanto, basta clicar em Avançar.

Publish_Web_wizard_Settings_tab_Migrate

Uma mensagem na guia Visualização indica que Nenhum banco de dados está selecionado para publicar, mas isso significa apenas que a publicação de banco de dados não está configurada no perfil de publicação.

Clique em Publicar.

Publish_Web_wizard_Preview_tab_Migrate

O Visual Studio implanta o aplicativo e abre o navegador na home page do site no ambiente de teste. Execute a página Instrutores para ver se ela exibe os mesmos dados que você viu anteriormente. Execute a página Adicionar Alunos , adicione um novo aluno e exiba o novo aluno na página Alunos . Isso verifica se você pode atualizar o banco de dados. Selecione a página Atualizar Créditos (você precisará fazer logon) para verificar se o banco de dados de associação foi implantado e se você tem acesso a ele.

Criando um banco de dados SQL Server para o ambiente de produção

Agora que você implantou no ambiente de teste, está pronto para configurar a implantação para produção. Você começa como fez para o ambiente de teste, criando um banco de dados para implantar. Conforme você se lembra da Visão geral, o plano de hospedagem do Cytanium Lite permite apenas um banco de dados SQL Server, portanto, você configurará apenas um banco de dados, não dois. Todas as tabelas e dados dos bancos de dados de associação e SQL Server Compact Escolar serão implantados em um banco de dados SQL Server em produção.

Vá para o painel de controle Cytanium em http://panel.cytanium.com. Segure o mouse sobre bancos de dados e clique em SQL Server 2008.

Selecting_Databases_in_Control_Panel

Na página SQL Server 2008, clique em Criar Banco de Dados.

Selecting_Create_Database

Nomeie o banco de dados como "Escola" e clique em Salvar. (A página adiciona automaticamente o prefixo "contosou", portanto, o nome efetivo será "contosouSchool".)

Naming_the_database

Na mesma página, clique em Criar Usuário. Nos servidores do Cytanium, em vez de usar a segurança integrada do Windows e permitir que a identidade do pool de aplicativos abra seu banco de dados, você criará um usuário que tenha autoridade para abrir seu banco de dados. Você adicionará as credenciais do usuário às cadeias de conexão que vão no arquivo deWeb.config de produção. Nesta etapa, você criará essas credenciais.

Creating_a_database_user

Preencha os campos necessários na página Propriedades do Usuário do SQL :

  • Insira "ContosoUniversityUser" como o nome.
  • Digite uma senha.
  • Selecione contosouSchool como o banco de dados padrão.
  • Selecione a caixa de marcar contosouSchool.

SQL_User_Properties_page

Configurando a implantação de banco de dados para o ambiente de produção

Agora você está pronto para definir as configurações de implantação de banco de dados na guia Pacote/Publicar SQL , como fez anteriormente para o ambiente de teste.

Abra a janela Propriedades do Projeto , selecione a guia Pacote/Publicar SQL e verifique se a opção Ativa (Versão) ou Versão está selecionada na lista suspensa Configuração .

Quando você define as configurações de implantação para cada banco de dados, a principal diferença entre o que você faz para ambientes de produção e teste é como você configura as cadeias de conexão. Para o ambiente de teste, você inseriu cadeias de conexão de banco de dados de destino diferentes, mas para o ambiente de produção o cadeia de conexão de destino será o mesmo para ambos os bancos de dados. Isso ocorre porque você está implantando os dois bancos de dados em um banco de dados em produção.

Definindo configurações de implantação para o banco de dados de associação

Para definir as configurações que se aplicam ao banco de dados de associação, selecione a linha DefaultConnection-Deployment na tabela Entradas do Banco de Dados .

Em Cadeia de conexão para o banco de dados de destino, insira um cadeia de conexão que aponte para o novo banco de dados de SQL Server de produção que você acabou de criar. Você pode obter a cadeia de conexão de seu email de boas-vindas. A parte relevante do email contém o seguinte exemplo cadeia de conexão:

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

Depois de substituir as três variáveis, a cadeia de conexão necessária será semelhante a este exemplo:

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

Copie e cole esse cadeia de conexão na cadeia de conexão do banco de dados de destino na guia Pacote/Publicar SQL.

Verifique se efetuar pull de dados e/ou esquema de um banco de dados existente ainda está selecionado e se as opções de script de banco de dados ainda são Esquema e Dados.

Na caixa Scripts de Banco de Dados, desmarque a caixa marcar ao lado do script Grant.sql.

Disable_Grant_script

Definindo configurações de implantação para o banco de dados escolar

Em seguida, selecione a linha SchoolContext-Deployment na tabela Entradas do Banco de Dados para definir as configurações do banco de dados School.

Copie o mesmo cadeia de conexão na cadeia de conexão do banco de dados de destino que você copiou para esse campo para o banco de dados de associação.

Verifique se efetuar pull de dados e/ou esquema de um banco de dados existente ainda está selecionado e se as opções de script de banco de dados ainda são Esquema e Dados.

Na caixa Scripts de Banco de Dados, desmarque a caixa marcar ao lado do script Grant.sql.

Salve as alterações na guia Pacote/Publicar SQL .

Configurando transformações de Web.Config para as cadeias de conexão para bancos de dados de produção

Em seguida, você configurará transformações deWeb.config para que as cadeias de conexão no arquivo Web.config implantado apontem para o novo banco de dados de produção. O cadeia de conexão que você inseriu na guia Pacote/Publicar SQL para Implantação da Web usar é o mesmo que o aplicativo precisa usar, exceto pela adição da opção MultipleResultSets .

Abra Web.Production.config e substitua o connectionStrings elemento por um connectionStrings elemento semelhante ao exemplo a seguir. (Copie apenas o connectionStrings elemento, não as marcas ao redor fornecidas para mostrar o contexto.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Às vezes, você vê conselhos que lhe dizem para sempre criptografar cadeias de conexão no arquivo Web.config . Isso pode ser apropriado se você estiver implantando em servidores na rede da sua própria empresa. No entanto, ao implantar em um ambiente de hospedagem compartilhado, você está confiando nas práticas de segurança do provedor de hospedagem e não é necessário ou prático criptografar as cadeias de conexão.

Implantando no ambiente de produção

Agora você está pronto para implantar na produção. A Implantação da Web lerá os bancos de dados SQL Server Compact na pasta App_Data do projeto e recriará todas as tabelas e dados no banco de dados de SQL Server de produção. Para publicar usando as configurações da guia Pacote/Publicar Web , você precisa criar um novo perfil de publicação para produção.

Primeiro, exclua o perfil de Produção existente como você fez o perfil de Teste anteriormente.

Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto ContosoUniversity e clique em Publicar.

Selecione a guia Perfil .

Clique em Gerenciar Perfis.

Selecione Produção, clique em Remover e, em seguida, clique em Fechar.

Feche o assistente Publicar Web para salvar essa alteração.

Em seguida, crie um novo perfil de Produção e use-o para publicar o projeto.

Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto ContosoUniversity e clique em Publicar.

Selecione a guia Perfil .

Clique em Importar e selecione o arquivo .publishsettings que você baixou anteriormente.

Na guia Conexão , altere a URL de Destino para a URL temporária correta, que neste exemplo é http://contosouniversity.com.vserver01.cytanium.com.

Renomeie o perfil para Produção. (Selecione a guia Perfil e clique em Gerenciar Perfis para fazer isso).

Feche o assistente Publicar Web para salvar suas alterações.

Em um aplicativo real no qual o banco de dados estava sendo atualizado em produção, você executaria duas etapas adicionais agora antes de publicar:

  1. Carregue app_offline.htm, conforme mostrado no tutorial Implantando no Ambiente de Produção .
  2. Use o recurso Gerenciador de Arquivos do painel de controle cytanium para copiar os arquivos aspnet-Prod.sdf e School-Prod.sdf do site de produção para a pasta App_Data do projeto ContosoUniversity. Isso garante que os dados que você está implantando no novo banco de dados SQL Server incluam as atualizações mais recentes feitas pelo site de produção.

Na barra de ferramentas Publicar do Web One Click , verifique se o Perfil de produção está selecionado e clique em Publicar.

Se você carregou app_offline.htm antes da publicação, precisará usar o utilitário Gerenciador de Arquivos no painel de controle cytanium para excluir app_offline.htm antes de testar. Você também pode, ao mesmo tempo, excluir os arquivos .sdf da pasta App_Data .

Agora você pode abrir um navegador e ir para a URL do seu site público para testar o aplicativo da mesma maneira que fez após a implantação no ambiente de teste.

Alternando para SQL Server Express LocalDB em Desenvolvimento

Como foi explicado na Visão geral, geralmente é melhor usar o mesmo mecanismo de banco de dados no desenvolvimento que você usa em teste e produção. (Lembre-se de que a vantagem de usar SQL Server Express no desenvolvimento é que o banco de dados funcionará da mesma forma em seus ambientes de desenvolvimento, teste e produção.) Nesta seção, você configurará o projeto ContosoUniversity para usar SQL Server Express LocalDB ao executar o aplicativo no Visual Studio.

A maneira mais simples de executar essa migração é permitir que o Code First e o sistema de associação criem os dois bancos de dados de desenvolvimento para você. O uso desse método para migrar requer três etapas:

  1. Altere as cadeias de conexão para especificar novos bancos de dados LocalDB do SQL Express.
  2. Execute a Ferramenta de Administração de Site para criar um usuário administrador. Isso cria o banco de dados de associação.
  3. Use o comando Migrações do Code First update-database para criar e propagar o banco de dados do aplicativo.

Atualizando cadeias de conexão no arquivo Web.config

Abra o arquivo Web.config e substitua o connectionStrings elemento pelo seguinte código:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

Criando o banco de dados de associação

Em Gerenciador de Soluções, selecione o projeto ContosoUniversity e clique ASP.NET Configuração no menu Projeto.

Selecione a guia Segurança.

Clique em Criar ou Gerenciar Funções e crie uma função de Administrador .

Volte para a guia Segurança.

Clique em Criar usuário e, em seguida, selecione a caixa marcar administrador e crie um usuário chamado administrador.

Feche a Ferramenta de Administração de Site.

Criando o banco de dados escolar

Abra a janela Console do Gerenciador de Pacotes.

Na lista suspensa Projeto padrão , selecione o projeto ContosoUniversity.DAL.

Insira o seguinte comando:

update-database

Migrações do Code First aplica a migração Inicial que cria o banco de dados e aplica a migração AddBirthDate e executa o método Seed.

Execute o site pressionando Control-F5. Como você fez para os ambientes de teste e produção, execute a página Adicionar Alunos , adicione um novo aluno e exiba o novo aluno na página Alunos . Isso verifica se o banco de dados escolar foi criado e inicializado e se você tem acesso de leitura e gravação a ele.

Selecione a página Atualizar Créditos e faça logon para verificar se o banco de dados de associação foi implantado e se você tem acesso a ele. Se você não migrou suas contas de usuário, crie uma conta de administrador e selecione a página Atualizar Créditos para verificar se ela funciona.

Limpando arquivos de SQL Server Compact

Você não precisa mais de arquivos e pacotes NuGet que foram incluídos para dar suporte a SQL Server Compact. Se desejar (esta etapa não é necessária), você pode limpo arquivos desnecessários e referências.

Em Gerenciador de Soluções, exclua os arquivos .sdf da pasta App_Data e as pastas amd64 e x86 da pasta bin.

Em Gerenciador de Soluções, clique com o botão direito do mouse na solução (não em um dos projetos) e clique em Gerenciar Pacotes NuGet para solução.

No painel esquerdo da caixa de diálogo Gerenciar Pacotes NuGet , selecione Pacotes instalados.

Selecione o pacote EntityFramework.SqlServerCompact e clique em Gerenciar.

Na caixa de diálogo Selecionar Projetos , ambos os projetos são selecionados. Para desinstalar o pacote em ambos os projetos, desmarque ambas as caixas marcar e clique em OK.

Na caixa de diálogo que pergunta se você deseja desinstalar os pacotes dependentes também, clique em Não. Um deles é o pacote do Entity Framework que você precisa manter.

Siga o mesmo procedimento para desinstalar o pacote SqlServerCompact . (Os pacotes devem ser desinstalados nesta ordem porque o pacote EntityFramework.SqlServerCompact depende do pacote SqlServerCompact .)

Agora você migrou com êxito para SQL Server Express e SQL Server completo. No próximo tutorial, você fará outra alteração no banco de dados e verá como implantar alterações de banco de dados quando os bancos de dados de teste e produção usarem SQL Server Express e SQL Server completos.