Aggiungere file esistenti a un progetto SQL

Si applica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

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 un dacpac o di script SQL a un progetto SQL e i compromessi tra le diverse fonti.

Importazione da un file .dacpac

Un file .dacpac è un modello di database compilato e richiede strumenti specifici per leggere e applicare il file. Un .dacpac file può essere generato come artefatto di compilazione del progetto SQL o da un database esistente e potrebbe esserti fornito senza che tu abbia accesso alla fonte. Oltre ai numerosi strumenti che possono applicare un a un database, SQL Server Data Tools (SSDT) in Visual Studio possono importare il contenuto di un file />

Screenshot del menu di importazione in un progetto SQL in Visual Studio SSDT.

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 l'origine di importazione contiene script di pre-distribuzione e di post-distribuzione, file RefactorLogs o le definizioni di variabile SQLCMD, essi 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 schema in Visual Studio Code per confrontare il contenuto di un file .dacpac a 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 alla directory 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 utilizzando 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 duplicata di un oggetto già presente nel progetto provoca il fallimento della build 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 può anche elaborare il contenuto degli script SQL quando vengono aggiunti a un progetto nello 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 potrebbe 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.

File XSD

I progetti SQL supportano anche l'importazione di file XSD per generare raccolte di XML Schema nel database. Per altre informazioni su come configurare i file XSD in un progetto SQL, vedere Raccolte di XML Schema nei progetti SQL.