Uma visão geral do banco de dados compilação e implantação

Para criar um banco de dados ou publicar atualizações em um banco de dados existente do seu o projeto de banco de dados a um servidor de banco de dados, construir o projeto de banco de dados e, em seguida, implantá-lo para o servidor.

A etapa de compilação compila o seu projeto de banco de dados em arquivos que são usados para implantação. Esses arquivos incluem o arquivo .dbschema, o arquivo .deploymentmanifest e os scripts de pré-implantação e pós-implantação. Não há comparação com um banco de dados de destino é executada quando você constrói o projeto de banco de dados. Quando você implanta o projeto de banco de dados, o resultado da ação de compilação é comparado com o banco de dados de destino, se o banco de dados de destino existe e as ações que são necessárias para atualizar o destino para coincidir com o projeto de banco de dados são identificadas. Dependendo das configurações, essas atualizações são implantadas no banco de dados de destino.

Como alternativa, você pode gerar o script de implantação (um arquivo.O arquivo SQL) e modifique-o antes de implantá-lo em um servidor de teste ou produção usando o Editor do Transact-SQL ou outra ferramenta como, por exemplo, SQL Server Management Studio. A ação de limpeza na construção exclui qualquer artefatos de compilação existente, como, por exemplo, scripts, os manifestos de implantação e os arquivos de .dbschema.

Scripts de implantação

Você pode criar scripts que são executados antes ou após os scripts que criar ou atualizar o destino. Você pode ter apenas um script de pré-implantação e um script de pós-implantação, mas você pode incluir outros scripts a partir desses scripts. Para obter mais informações, consulte Criar e modificar Scripts de banco de dados.

Manifesto de implantação

Quando você compila seu projeto de banco de dados, um manifesto de implantação é gerado. Esse manifesto contém todas as informações de configuração de nível de projeto é necessárias para que você possa implantar sem a necessidade de também o arquivo de projeto de banco de dados (.dbproj).

Um arquivo de manifesto de implantação (.deploymanifest) é um arquivo XML, cuja estrutura é muito semelhante a um arquivo de projeto MSBuild. O arquivo .deploymanifest é criado na sql\configuração a pasta na sua pasta de projeto de banco de dados, onde configuração é a configuração de compilação, como debug ou release.

O exemplo a seguir mostra o arquivo de .deploymanifest para um vazio SQL Server 2008 banco de dados projeto chamado Empty2008DbProj:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <TargetConnectionString>Data Source=stevenpoauth\sql2k8;Integrated Security=True;Pooling=False</TargetConnectionString>
    <TargetDatabase>Empty2008DbProj</TargetDatabase>
    <DeployToDatabase>True</DeployToDatabase>
    <DeployToScript>True</DeployToScript>
    <SourceModel>Empty2008DbProj.dbschema</SourceModel>
    <DeployScriptFileName>Empty2008DbProj.sql</DeployScriptFileName>
    <DeploymentConfigurationFile>Empty2008DbProj_Database.sqldeployment</DeploymentConfigurationFile>
  </PropertyGroup>
  <PropertyGroup>
    <SqlCommandVariablesFile>Empty2008DbProj_Database.sqlcmdvars</SqlCommandVariablesFile>
  </PropertyGroup>
  <ItemGroup>
    <DeploymentExtensionConfiguration Include="Empty2008DbProj_Script.PostDeployment.sql">
      <__PostdeploymentMetadata>
      </__PostdeploymentMetadata>
    </DeploymentExtensionConfiguration>
    <DeploymentExtensionConfiguration Include="Empty2008DbProj_Script.PreDeployment.sql">
      <__PredeploymentMetadata>
      </__PredeploymentMetadata>
    </DeploymentExtensionConfiguration>
  </ItemGroup>
  <ItemGroup>
    <DeploymentExtension Include="Microsoft.Data.Schema.Sql.Build.SqlPlanOrderModifier">
      <Assembly>Microsoft.Data.Schema.Sql</Assembly>
      <Version>10.0.0.0</Version>
      <Token>sD9ffxHVCjo=</Token>
    </DeploymentExtension>
    <DeploymentExtension Include="Microsoft.Data.Schema.Sql.Build.SqlPrePostDeploymentModifier">
      <Assembly>Microsoft.Data.Schema.Sql</Assembly>
      <Version>10.0.0.0</Version>
      <Token>sD9ffxHVCjo=</Token>
    </DeploymentExtension>
    <DeploymentExtension Include="Microsoft.Data.Schema.Sql.Refactoring.SqlRefactoringDeploymentContributor">
      <Assembly>Microsoft.Data.Schema.Sql</Assembly>
      <Version>10.0.0.0</Version>
      <Token>sD9ffxHVCjo=</Token>
    </DeploymentExtension>
  </ItemGroup>
</Project>

O arquivo de manifesto de implantação contém um ou mais nós PropertyGroup definem a configuração padrão que é usada quando você implanta. O arquivo de manifesto de implantação também inclui nós ItemGroup que contêm nós de DeploymentExtensionConfiguration e referência.

DeploymentExtensionConfiguration nós definem arquivos de configuração que são passados para extensões de implantação, quando você implanta. Esses arquivos de configuração incluem os scripts de pré-implantação e pós-implantação, bem como o log de refatoração é usado para preservar a intenção quando você implanta.

Nós de referência definem os artefatos que são referenciados pelo projeto e que são copiados para a pasta de saída quando você constrói o projeto. Os arquivos de referência são processados quando você implanta para garantir que o modelo do banco de dados seja recriado corretamente.

Transações no Script de implantação

A maioria das alterações de banco de dados, o script de implantação ocorrer dentro de uma transação, para que as alterações podem ser revertidas se distribuição falhar. No entanto, os seguintes objetos são criados, atualizados ou excluídos fora da transação de implantação.

Versão de SQL Server

Objetos fora da transação de implantação

SQL Server 2008 

Associação da função de servidor

Pontos de extremidade

Índices de texto completo

Catálogos de texto completo

Servidores vinculados

Logons vinculados do servidor

Sessões de evento

Especificações de auditoria de servidor

Listas de parada de texto completo

SQL Server 2005

Associação da função de servidor

Pontos de extremidade

Índices de texto completo

Catálogos de texto completo

Servidores vinculados

Logons vinculados do servidor

Normalmente, esses objetos devem estar fora da transação de implantação, porque são mantidas por meio de procedimentos armazenados do sistema.

Considerações sobre a implantação de alterações para um banco de dados existente

Ao implantar um banco de dados existente, algumas alterações podem causar perda de dados. Se uma alteração pode causar dados em uma tabela sejam perdidos, a implantação será cancelada se o implantação incremental do bloco se poderá ocorrer perda de dados caixa de seleção está marcada. Por padrão, esta caixa de seleção estiver marcada, mas pode localizá-lo na janela Propriedades do projeto. Para obter mais informações, consulte Uma visão geral das configurações de projeto de banco de dados.

Os seguintes tipos de alterações causará a perda de dados: Se uma tabela é descartada e recriada, se você alterar o tamanho de uma coluna (char (100) char(50) ou nchar (100) para char(100)), ou se você alterar o agrupamento de uma coluna que tem um tipo de caractere.

ObservaçãoObservação

Quando você usa a refatoração para renomear um objeto de banco de dados ou para mover um objeto de banco de dados para outro esquema, o arquivo de log de refatoração registra essa ação. No momento da implantação, as informações no arquivo de log ajuda a preservar a intenção de suas alterações. Por exemplo, você poderá perder dados se você renomeou uma tabela, porque a tabela seria descartada e uma tabela seria criada com o novo nome. Com o arquivo de log de refatoração, o script de implantação em vez disso, pode renomear a tabela, preservando sua intenção e seus dados.

Recuperação de falha nas implantações

Você pode perder dados se sua implantação falhar fora das seções transacionadas do script de implantação. Por esse motivo, você deve considerar fortemente a colocação de um banco de dados compartilhado em modo de usuário único e fazer o backup antes de implantá-lo.

Arquivos excluídos

Se você excluir arquivos do seu projeto de banco de dados, o os objetos de banco de dados que são definidos dentro dos arquivos não serão incluídos no arquivo .dbschema que é criado quando o projeto de banco de dados é criado. Esses objetos não são implantados, porque os objetos não estão incluídos no arquivo .dbschema. Se você ainda estiver trabalhando em um ou mais objetos, mas deseja implantar o trabalho já foi concluído, você pode excluir arquivos da compilação para que apenas os objetos que estão prontos estão incluídos no arquivo .dbschema e implantados no banco de dados de destino. Você pode incluir os arquivos mais tarde quando elas estiverem prontas para serem implantados e implantação atualizará o banco de dados com os novos objetos sem modificar objetos existentes (se eles não tiverem sido alterados em seu projeto). Para obter mais informações, consulte Como: Excluir arquivos de um projeto de banco de dados.

Observação importanteImportante

Você pode perder dados se você excluir objetos do seu projeto de banco de dados que existe no banco de dados de destino e, em seguida, implantar o projeto. Esses objetos serão excluídos do banco de dados de destino se a gerar SOLTAR instruções para objetos que estão no banco de dados de destino, mas que não estão em projeto de banco de dados caixa de seleção está selecionada na configuração de implantação.

Projetos de servidor

Projetos do servidor contêm definições de objetos no "mestre" o banco de dados. O nome do banco de dados de destino para um projeto de servidor é sempre "mestre". Para cada configuração de servidor, você pode especificar se deseja verificar o valor dessa definição, quando você implanta o projeto de servidor. As configurações que você não verificá são ignoradas. Se o valor de uma configuração de servidor não corresponder ao valor de uma configuração que você deseja verificar, a distribuição falhar com uma mensagem de erro.

Compilações de linha de comando

Para além de realizar a compilação, implantação ou limpar as ações de dentro do Visual Studio interface de usuário, você também pode executar essas ações em um prompt de comando usando MSBuild. exe. Você pode especificar a construir, implantar, reconstrução e destinos limpos. Por padrão, a compilação e implantar as propriedades do projeto são definidas dentro do projeto de banco de dados de uso de processos (no arquivo .dbproj ou a. arquivo de dbproj.User). No entanto, você pode substituir essas propriedades em um prompt de comando ou de dentro um arquivo de resposta.

Observação importanteImportante

Você deve fechar Visual Studio antes de executar uma compilação de linha de comando. Se você executar uma linha de comando Construir quando Visual Studio está em execução, alguns erros podem não ser detectados.

Você também pode usar o VSDBCMD.EXE para implantar um arquivo de .dbschema a partir de um prompt de comando. Você pode usar o VSDBCMD em um computador que não tem Visual Studio instalado. Para obter mais informações, consulte Como: Prepare um banco de dados para a implantação de um Prompt de comando usando o VSDBCMD.EXE. Quando você implanta um ambiente de produção, você pode usar o VSDBCMD ou você pode gerar um script de implantação e implantar manualmente esse script usando o Editor do Transact-SQL ou outra ferramenta como SQL Server Management Studio.

Sintaxe de linha de comando

Você pode criar o projeto de banco de dados em um prompt de comando usando os seguintes exemplos de sintaxe:

  • MSBuild /target:Build MySolutionName. sln
    Este exemplo executa a ação de compilação da solução chamado MySolutionName. sln usando as propriedades do projeto são especificadas em arquivos de projeto a solução contém. Se a solução contém vários projetos de banco de dados, eles são criados em conjunto com o restante da solução. Você também pode criar um projeto de banco de dados específico. O destino de compilação inclui scripts de pré-implantação e pós-implantação no script de construção gerado.

  • MSBuild /target: implantar /p:UseSandboxSettings = false /p:TargetDatabase = UpdatedTargetDatabase;TargetConnectionString = "Data Source = \SQLEXPRESS;Integrated (local) segurança = verdadeiro;Pool = False " MyProjectName.dbproj
    Este exemplo demonstra como implantar o projeto de banco de dados ao mesmo tempo, substituindo a seqüência de conexão e o nome de banco de dados do destino.

  • MSBuild /target: implantar /p:UseSandboxSettings = false /p:DeploymentConfiguration =DeployPath\AlternateDeploymentConfiguration.deploymentconfig /p:SqlCommandVarsFile =VarPath\AlternateVariables.sqlcmdvars /p:TargetDatabase = UpdatedTargetDatabase;TargetConnectionString = "Data Source = \SQLEXPRESS;Integrated (local) segurança = verdadeiro;Pool = False " MyProjectName.dbproj
    Este exemplo demonstra como implantar o projeto de banco de dados enquanto especificando uma seqüência de caracteres de conexão e o banco de dados de destino diferente e substituindo a configuração de implantação e as variáveis de implantação.

  • MSBuild /target: implantar /p:UseSandboxSettings = false /p:BuildScriptName =MyScriptName. SQL /p:outdir =BuildScriptPath /p:TargetDatabase =UpdatedTargetDatabase;TargetConnectionString = "Data Source =InstanceName\DatabaseName; segurança integrada = verdadeiro;Pool = False " ProjectPath\MyProjectName.dbproj
    Este exemplo demonstra como implantar um banco de dados de um computador diferente daquele em que a compilação ocorreu. Por exemplo, você pode usar essa sintaxe, se você tiver um computador central de compilação que cria um script de compilação de todas as noites. Você deve especificar o nome do script de construção, o caminho onde o script de construção pode ser encontrado (outdir), o banco de dados de destino e o caminho e o nome do projeto de banco de dados.

  • MSBuild @dbbuild.arf MyProjectName.dbproj
    Este exemplo demonstra como usar um arquivo de resposta para fornecer os argumentos de linha de comando. O arquivo, dbbuild.arf, pode conter qualquer argumento válido para MSBuild, inclusive aquelas que substituir propriedades do projeto.

  • MSBuild /target:Rebuild MyProjectName.dbproj
    Este exemplo recria o projeto especificado ou solução, mesmo se ele não foi alterado desde a última vez em que ele foi criado.

  • MSBuild /target: limpa MyProjectName.dbproj
    Este exemplo demonstra como excluir quaisquer scripts de compilação existente. Na maioria dos casos, você teria siga esta ação com outra construção ou implantar a ação.

ObservaçãoObservação

Você pode abreviar /target: como /t: e /property: como /p:.

Para obter mais informações, consulte Referência de linha de comando do MSBuild.

Para obter mais informações sobre arquivos de resposta, consulte este tópico no site da Microsoft: Arquivos de resposta do MSBuild.

ObservaçãoObservação

Para executar MSBuild. exe, você deve usar o Visual Studio o Prompt de comando, ou você deve executar o arquivo de lote de vsvars32.bat. Você pode encontrar esse arquivo em lotes na pasta que especifica a variável de ambiente % VS80COMNTOOLS %.

Software necessário no computador de construção

Visual Studio Team Foundation Server 2010tem suporte nativo para a criação, implantação e teste de unidade e geração de dados para um projeto de banco de dados. Não é necessário instalar o Visual Studio no seu computador de compilação. Se você não estiver usando Visual Studio Team Foundation Server 2010 em seu computador de compilação, você deve instalar o Visual Studio 2010 Professional, Visual Studio 2010 Premium, ou Visual Studio 2010 Ultimate no seu computador de compilação.

Além disso, se você desejar implantar um banco de dados de Team Foundation Build diferente como parte de um teste de unidade de banco de dados, você deve executar uma instalação adicional. Você deve copiar a pasta de 10.0\VSTSDB\Deploy de Visual Studio do programa FILES%\Microsoft % e seu conteúdo, incluindo subpastas, a partir de um Visual Studio 2010 a instalação para o seu computador de compilação. Para obter mais informações, consulte Como: Implantar alterações usando o Team Foundation Build e Demonstra Passo a passo: Definir um fluxo de trabalho personalizado para implantar um banco de dados do Team Foundation Build.

Propriedades do projeto

Algumas propriedades de projetos de banco de dados e servidor afetam como esses projetos serão criados e implantados. Essas propriedades são armazenadas no arquivo de projeto e o arquivo. User, mas você pode substituí-los em um prompt de comando ou em um arquivo de resposta. Para obter mais informações, consulte Como: Definir as configurações de compilação para o banco de dados e projetos de servidor e Como: Definir as configurações de implantação para o banco de dados e projetos de servidor.

Substituindo propriedades de manifesto de implantação

Você pode substituir as propriedades de implantação padrão (como, por exemplo, configuração de implantação, a seqüência de conexão ou variáveis SQLCMD) quando você implanta a partir da linha de comando. Você pode escolher fazer isso, se você desejar implantar um arquivo de .dbschema em vários ambientes.

Por exemplo, se você desejar implantar um esquema definido em EnterpriseDB.dbproj em ambientes de produção, teste e desenvolvimento, você pode usar as seguintes linhas de comando:

Ambiente de implantação

MSBuild EnterpriseDB.dbproj /t:Deploy /p:UseSandboxSettings=false /p:DeploymentConfigurationFile=sql\debug\Development.sqldeployment /p:SqlCommandVariablesFile=sql\debug\Development.sqlcmdvars /p:TargetConnectionString="Data Source=DEV\sql2008;Integrated Security=true;Pooling=false"

Ambiente de teste

MSBuild EnterpriseDB.dbproj /t:Deploy /p:UseSandboxSettings=false /p:DeploymentConfigurationFile=sql\debug\UserTest.sqldeployment /p:SqlCommandVariablesFile=sql\debug\UserTest.sqlcmdvars /p:TargetConnectionString="Data Source=USERTEST\sql2008;Integrated Security=true;Pooling=false"

Ambiente de produção

MSBuild EnterpriseDB.dbproj /t:Deploy /p:UseSandboxSettings=false /p:DeploymentConfigurationFile=sql\debug\Production.sqldeployment /p:SqlCommandVariablesFile=sql\debug\Production.sqlcmdvars /p:TargetConnectionString="Data Source=PRODUCTION\sql2008;Integrated Security=true;Pooling=false"

Em cada ambiente, você pode fornecer um arquivo de configuração de implantação diferentes, um arquivo diferente de variáveis SQLCMD e uma seqüência de caracteres de conexão diferente.

Consulte também

Tarefas

Como: Construir um projeto de banco de dados para gerar um esquema compilado (.dbschema) o arquivo

Como: Implantar alterações em bancos de dados novos ou existentes

Demonstra Passo a passo: Criar e implantar um novo banco de dados com versão controlada

Demonstra Passo a passo: Implantar alterações em um banco de dados existente do controle de versão

Conceitos

Criar e implantar os bancos de dados para um ambiente de desenvolvimento isolado

Criar e implantar os bancos de dados para um ambiente de produção ou de preparo

Histórico de alterações

Date

History

Motivo

Julho de 2010

Esclarecida a qual software é necessária na máquina de compilação confusão de endereço reportado nos fóruns do MSDN.

Comentários do cliente.