Condividi tramite


Eseguire l'importazione in un progetto di database

È possibile utilizzare l'opzione Importa per popolare un progetto con nuovi oggetti da un database attivo o da un file con estensione dacpac o per aggiornare oggetti esistenti con una definizione da uno script. Nei tre percorsi sono presenti differenze di comportamento che vengono descritte di seguito.

Menu Importa

SSDT Import Menu

Sezioni dell'argomento

Origine di importazione: database o applicazione livello dati (*.dacpac)

Origine di importazione: script (*.sql)

Importare oggetti crittografati

Origine di importazione: database o applicazione livello dati (*.dacpac)

È 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. Questo non include file refactorlog o script di pre-distribuzione o post-distribuzione.

Durante l'importazione le definizioni di oggetti verranno 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 o 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 refactorlog o definizioni di variabile SQLCMD verranno importati nel progetto. Se il progetto contiene già uno di questi artefatti, i file importati verranno aggiunti alla cartella Ignorato durante l'importazione del progetto.

Cartella Ignorato durante l'importazione

SSDT Ignored on Import Folder

Origine di importazione: script (*.sql)

Tutti gli oggetti dell'origine di importazione che non esistono già nel progetto verranno aggiunti, mentre tutti quelli che esistono già nel progetto verranno sovrascritti dalla definizione di oggetto nel progetto.

Nota

In questo percorso sono presenti due bug conosciuti che verranno risolti in una versione futura:

  • Se i vincoli di tabella o di colonna vengono definiti all'esterno dell'istruzione CREATE TABLE nella definizione di tabella del progetto, in seguito all'importazione la definizione di tabella verrà sovrascritta in modo che il vincolo si trovi inline. Poiché il vincolo out-of-line non verrà eliminato, nel progetto saranno tuttavia presenti vincoli duplicati.
  • Durante l'importazione, tutte le chiavi master o le chiavi di crittografia del database derivanti dallo script di origine già presenti nel progetto verranno duplicate. Per compilare il progetto, rimuovere i duplicati.

Il processo di importazione da script non includerà gli script di pre-distribuzione o di post-distribuzione, i file refactorlog e le variabili SQLCMD. Questi elementi e altri costrutti non supportati rilevati durante l'importazione verranno inseriti in un file ScriptsIgnoredOnImport.sql in una cartella Script del progetto.

Importare oggetti crittografati

Quando si importano oggetti crittografati in un progetto di database, non è sempre possibile recuperare l'intero corpo della definizione di oggetto dal server. Per questo motivo, quando viene applicata a questa classe di oggetti, il comportamento dell'importazione può essere diverso.

Quando non è possibile recuperare la definizione dell'intero corpo, l'intestazione o il piè di pagina dell'oggetto verranno inseriti nello script con un corpo fittizio. Questa situazione può verificarsi quando si utilizza l'opzione Importa o Confronto schema in cui l'origine di importazione è un database attivo o un file con estensione dacpac estratto da un database.

Script con corpo fittizio

Script with a Dummy Body

Nel caso in cui la definizione di oggetto completa sia disponibile e possa essere recuperata, le operazioni di importazione e di confronto schema la inseriranno completamente nel progetto. Questa situazione di verifica durante l'aggiornamento del progetto da uno script, da un file con estensione dacpac creato da un progetto di database o da un altro progetto di database.