Compartilhar via


Adicionar arquivos existentes a um projeto SQL

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Como um conceito, depois que um projeto SQL for criado, os objetos poderão ser adicionados a ele um de cada vez ou em massa. Adicionar objetos um de cada vez é simples, enquanto a adição em massa pode ser feita no conteúdo de um arquivo .dacpac, ou em um ou mais scripts SQL. Este artigo explica como adicionar o conteúdo de scripts dacpac ou SQL a um projeto SQL e as compensações entre as origens.

Importar de um arquivo .dacpac

Um arquivo .dacpac é um modelo de banco de dados compilado e requer ferramentas específicas para ler e aplicar o arquivo. Um arquivo .dacpac pode ser gerado como um artefato de compilação de projeto SQL ou de um banco de dados existente, e você poderá receber um sem acesso à origem. Além das muitas ferramentas que podem aplicar um .dacpac a um banco de dados, o SQL Server Data Tools (SSDT) no Visual Studio pode importar o conteúdo de um arquivo .dacpac diretamente em um projeto. A capacidade de importar o esquema de um banco de dados ou um arquivo .dacpac somente estará disponível se não houver objetos de esquema já definidos no projeto.

Captura de tela do menu de importação em um projeto SQL no Visual Studio SSDT.

Durante a importação, as definições de objeto são colocadas em scripts nos arquivos de projeto usando os padrões organizacionais do SSDT para novos objetos: novos arquivos para objetos de nível superior, filhos hierárquicos definidos no mesmo arquivo como o pai, restrições de tabela/coluna definidas de modo embutido quando possível. Para obter a visibilidade e o controle mais direcionados para cada objeto, use Comparação de Esquemas, em vez de Importar. Se a fonte de importação contiver Scripts da Pré e Pós-Implantação, RefactorLogs ou definições de variáveis SQLCMD, eles serão importados no projeto. Se o projeto já contiver um desses artefatos, os arquivos importados serão adicionados à pasta Ignorados na Importação no projeto.

Se o Visual Studio e o SQL Server Data Tools não estiverem disponíveis, você poderá:

  • Usar a extensão Schema Compare no Azure Data Studio para comparar o conteúdo de um arquivo .dacpac a um projeto e, em seguida, aplicar seletivamente as alterações ao projeto.
  • Usar o utilitário de linha de comando SqlPackage para importar o conteúdo de um arquivo .dacpac para um banco de dados e, em seguida, criar um projeto do banco de dados.

Fazer importações de scripts SQL

Os scripts T-SQL podem ser importados para um projeto SQL de duas maneiras: adicionando os arquivos de script ao diretório do projeto ou processando o conteúdo dos scripts no Visual Studio. O método escolhido depende do tipo de projeto e do nível desejado de controle sobre o processo de importação. Em ambos os casos, a sintaxe dos arquivos de script deve ser válida.

Adicionar arquivos a um projeto

Com projetos SQL no estilo SDK, você pode adicionar scripts SQL existentes a um projeto, colocando-os no diretório do projeto porque o Microsoft.Build.Sql inclui automaticamente todos os arquivos *.sql do projeto. Se você estiver usando um projeto que não seja do estilo SDK, importe os scripts SQL existentes para o projeto utilizando o processamento de script no Visual Studio. Os arquivos *.sql incluídos automaticamente no projeto são incluídos na construção do modelo de banco de dados como objetos SQL.

Um arquivo adicionado à pasta do projeto, contendo uma definição de objeto duplicada para um objeto já presente no projeto, causa falha na compilação do projeto. Você precisa resolver manualmente o conflito removendo o objeto duplicado ou renomeando um dos objetos.

Para adicionar um arquivo a um projeto como um script de pré ou pós-implantação, além de adicionar o arquivo ao diretório do projeto, você também deverá incluí-lo no arquivo do projeto. Por exemplo, para adicionar um arquivo denominado Pre-DeploymentScript.sql como um script pré-implantação, adicione os itens abaixo ao arquivo do projeto:

<ItemGroup>
  <PreDeploy Include="Pre-DeploymentScript.sql" />
</ItemGroup>

Mais informações sobre scripts pré/pós-implantação podem ser encontradas na documentação de projetos SQL.

Processar conteúdo de arquivos

O SQL Server Data Tools (SSDT) no Visual Studio também tem a capacidade de processar o conteúdo de scripts SQL ao adicioná-los a um projeto de estilo original. Durante esse processamento, se um script contiver um objeto já definido no projeto, a definição do objeto será atualizada para corresponder ao script. Se o script contiver um objeto ainda não definido no projeto, um novo arquivo será criado para o objeto.

Alguns problemas conhecidos podem ocorrer, nos quais o processamento do script pode resultar em instruções com restrição e chave de criptografia duplicadas. Se você encontrar esses problemas, utilize a janela de saída da compilação para identificar a origem das duplicações e removê-las manualmente do projeto.

O processo Importar do Script não incorpora scripts Pré/Pós-Implantação, variáveis SQLCMD ou arquivos RefactorLog. Esses e todos os outros constructos incompatíveis, que forem detectados na importação, serão colocados em um arquivo ScriptsIgnoredOnImport.sql em uma pasta Scripts do projeto.