Aggiungere file esistenti a un progetto SQL
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Come concetto, una volta creato un progetto SQL, gli oggetti possono essere aggiunti uno alla volta o in blocco. Aggiungere gli oggetti uno alla volta è semplice, mentre l'aggiunta di oggetti in blocco può essere eseguita dal contenuto di un file .dacpac
o da uno o più script SQL. Questo articolo illustra come aggiungere il contenuto di script dacpac o SQL a un progetto SQL e i compromessi tra le origini.
Importazione da un file .dacpac
Un file .dacpac
è un modello di database compilato e richiede strumenti specifici per leggere e applicare il file. Un file .dacpac
può essere generato come un artefatto della compilazione del progetto SQL o da un database esistente e all’utente potrebbe esserne fornito uno senza accesso all'origine. Oltre ai numerosi strumenti che possono applicare .dacpac
a un database, SQL Server Data Tools (SSDT) in Visual Studio può importare il contenuto di un file .dacpac
direttamente in un progetto. È possibile importare uno schema da un database o da un file con estensione dacpac solo se non sono presenti oggetti dello schema già definiti nel progetto.
Durante l'importazione, le definizioni di oggetti vengono inserite in script in file di progetto tramite impostazioni predefinite organizzative di SSDT per i nuovi oggetti, ovvero nuovi file per oggetti di livello superiore, figli gerarchici definiti nello stesso file come il padre o vincoli di tabella/colonna definiti inline quando possibile. Per una visibilità e un controllo più mirati per ogni oggetto, utilizzare Confronto schema anziché Importa. Se contenuti nell'origine di importazione, script di pre-distribuzione o di post-distribuzione, file RefactorLogs o definizioni di variabile SQLCMD vengono importati nel progetto. Se il progetto contiene già uno di questi artefatti, i file importati vengono aggiunti alla cartella Ignorato durante l'importazione del progetto.
Se Visual Studio e SQL Server Data Tools non sono disponibili, è possibile:
- Usare l'estensione Confronto schemi in Azure Data Studio per confrontare il contenuto di un file
.dacpac
con un progetto, quindi applicare in modo selettivo le modifiche al progetto. - Usare l'utilità della riga di comando SqlPackage per importare il contenuto di un file
.dacpac
in un database e quindi creare un progetto dal database.
Importazione da script SQL
Gli script T-SQL possono essere importati in un progetto SQL in due modi: aggiungendo i file di script all’elenco del progetto o elaborando il contenuto degli script in Visual Studio. Il metodo scelto dipende dal tipo di progetto e dal livello desiderato di controllo sul processo di importazione. In entrambi i casi, la sintassi dei file di script deve essere valida.
Aggiungere file a un progetto
Con i progetti SQL in stile SDK, è possibile aggiungere script SQL esistenti a un progetto inserendoli nell’elenco del progetto, perché Microsoft.Build.Sql include automaticamente tutti i file *.sql
nel progetto. Se si usa un progetto non in stile SDK, è necessario importare gli script SQL esistenti nel progetto usando l'elaborazione degli script in Visual Studio. I file *.sql
inclusi automaticamente nel progetto vengono inclusi nella creazione del modello di database come oggetti SQL.
Un file aggiunto alla cartella del progetto contenente una definizione di oggetto duplicato a un oggetto già presente nel progetto causa l'esito negativo della creazione del progetto. È necessario risolvere manualmente il conflitto rimuovendo l'oggetto duplicato o rinominando un oggetto.
Per aggiungere un file a un progetto come script pre-distribuzione e post-distribuzione, oltre ad aggiungere il file all’elenco del progetto, è necessario includere anche il file nel file di progetto. Ad esempio, per aggiungere un file denominato Pre-DeploymentScript.sql
come script pre-distribuzione, aggiungere quanto segue al file di progetto:
<ItemGroup>
<PreDeploy Include="Pre-DeploymentScript.sql" />
</ItemGroup>
Altre informazioni sugli script pre-distribuzione e post-distribuzione sono disponibili nella documentazione dei progetti SQL.
Elaborazione del contenuto dei file
SQL Server Data Tools (SSDT) in Visual Studio offre anche la capacità di elaborare il contenuto degli script SQL durante l'aggiunta a un progetto di stile originale. Durante questa elaborazione, se uno script contiene un oggetto già definito nel progetto, la definizione dell'oggetto viene aggiornata in modo che corrisponda allo script. Se lo script contiene un oggetto che non è già definito nel progetto, viene creato un nuovo file per l'oggetto.
Esistono problemi noti in cui l'elaborazione dello script può causare vincoli duplicati e istruzioni di chiave di crittografia. Se si verificano questi problemi, usare la finestra di output di creazione per identificare l'origine dei duplicati e rimuoverli manualmente dal progetto.
Il processo di importazione da script non include gli script pre-distribuzione e post-distribuzione, i file RefactorLog e le variabili SQLCMD. Questi elementi e altri costrutti non supportati rilevati durante l'importazione vengono inseriti in un file ScriptsIgnoredOnImport.sql in una cartella Script del progetto.