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.
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.