Condividi tramite


SqlPackage per il database SQL in Microsoft Fabric

Si applica a:Database SQL in Microsoft Fabric

In questa esercitazione si apprenderà come usare SqlPackage nel database SQL in Fabric.

SqlPackage è un'interfaccia della riga di comando che fornisce la portabilità del database e le distribuzioni di database.

  • La portabilità (importazione/esportazione) di un database gestito in Azure o in Fabric garantisce che i dati siano portabili in altre piattaforme se si vuole eseguire la migrazione in un secondo momento. - La portabilità include lo spostamento da e verso SQL Server, il database SQL di Azure, Istanza gestita di SQL di Azure e il database SQL in Fabric tramite copie di database indipendenti (.bacpac o .dacpac file).

SqlPackage può anche consentire semplici distribuzioni di database di modifiche incrementali agli oggetti di database (nuove colonne in tabelle, modifiche alle stored procedure esistenti e così via).

  • SqlPackage può estrarre un .dacpac file contenente le definizioni degli oggetti in un database e pubblicare un .dacpac file per applicare lo stato dell'oggetto a un database nuovo o esistente.
  • L'operazione di pubblicazione si integra anche con i progetti SQL, che consente cicli di sviluppo offline e più dinamici per i database SQL.

Prerequisiti

Attrezzaggio

SqlPackage è disponibile per Windows, macOS e Linux come strumento dotnet. È possibile installarlo usando il comando seguente:

dotnet tool install --global Microsoft.SqlPackage

Come strumento dotnet globale, SqlPackage è disponibile nel terminale come sqlpackage da qualsiasi cartella.

Importare un database con SqlPackage

Un .bacpac è una copia portabile di un database, utile per alcuni scenari di migrazione e test. È possibile importarli.bacpac in un database SQL vuoto con l'importazione di SqlPackage.

Nota

Un .bacpac non è un backup né una sostituzione per le funzionalità di backup/ripristino. Per altre informazioni sui backup per il database SQL in Fabric, vedere Backup automatici nel database SQL in Microsoft Fabric e ripristino da un backup nel database SQL in Microsoft Fabric.

  1. Se si usa un oggetto .bacpac da un ambiente Azure o SQL Server, potrebbe essere necessario modificare il database di origine per soddisfare il database SQL nella superficie T-SQL di Fabric. Vedere Estrazione e pubblicazione della portabilità per un metodo alternativo che consente alle proprietà SqlPackage di ignorare alcuni oggetti non supportati.

  2. Creare il nuovo database SQL in Fabric come di consueto tramite l'interfaccia Fabric.

  3. Copiare il stringa di connessione dalle impostazioni.

    Screenshot del portale di Infrastruttura che mostra la pagina Stringhe di connessione del database SQL.

  4. Usare il comando import dal terminale nella cartella sqlpackage. Specificare il proprietario <servername> e <database_name>.

    sqlpackage /action:import /sourcefile:"C:\DatabaseName.bacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"
    
    • Sostituire il stringa di connessione dalla finestra di dialogo Impostazioni database SQL.
    • Sostituire il sourcefile valore con il .bacpac nome (DatabaseName) e location nel computer locale.
  5. Seguire l'importazione con un processo di copia in Data Factory in Microsoft Fabric. Per iniziare, vedere Avvio rapido: Creare un processo di copia.

Esportare un database con SqlPackage

L'esportazione di è .bacpac l'operazione inversa, dove targetfile si trova e .bacpac si sourceconnectionstring trova nella finestra di dialogo Impostazioni database SQL, come nell'esempio precedente. Specificare il proprietario <servername> e <database_name>. Ad esempio:

sqlpackage /action:export /targetfile:"C:\DatabaseName.bacpac" /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"

Per altre informazioni sull'esportazione, vedere Esportazione di SqlPackage.

Estrarre e pubblicare

Diagramma del modo in cui i progetti di database SQL possono spostare le modifiche dello schema.

È .dacpac un file del modello di schema del database contenente le definizioni per le tabelle, le stored procedure e altri oggetti nel database di origine. Questo file può essere creato da un database esistente con SqlPackage o da un progetto di database SQL.

SqlPackage è in grado di distribuire un oggetto .dacpac in un nuovo database (vuoto) o di aggiornare in modo incrementale un database esistente in modo che corrisponda allo stato desiderato .dacpac .

  • L'estrazione crea un .dacpac file o sql da un database esistente.
  • La pubblicazione distribuisce un oggetto .dacpac in un database.

La sintassi di SqlPackage per la pubblicazione e per l'estrazione è simile ai comandi di importazione/esportazione.

Avvertimento

È consigliabile usare SqlPackage per distribuire un progetto SQL o .dacpac nel database SQL in Fabric. La distribuzione di un .dacpac da Visual Studio potrebbe non riuscire.

Per distribuire un .dacpac creato da database SQL di Azure, SQL Server o un progetto SQL destinato a una piattaforma diversa da database SQL in Fabric, aggiungere la proprietà /p:AllowIncompatiblePlatform=true al comando di pubblicazione di SqlPackage.

Estrarre e rendere pubblica la portabilità

Mentre i comandi di importazione/esportazione di SqlPackage sono incentrati sulla portabilità dei dati con il .bacpac formato, i comandi di estrazione e pubblicazione sono in grado di portabilità dei dati con il .dacpac formato. È possibile usare le proprietà di estrazione e pubblicazione per controllare il comportamento delle operazioni di estrazione e pubblicazione e offrire maggiore flessibilità per le conversioni tra piattaforme.

Per estrarre e .dacpac includere i dati, utilizzare la /p:ExtractAllTableData=true proprietà . L'operazione di estrazione crea un oggetto .dacpac contenente sia lo schema che i dati del database di origine. La proprietà /p:ExtractReferencedServerScopedElements=false esclude gli elementi con ambito server, che non sono supportati nel database SQL in Fabric. Il comando seguente estrae un .dacpac con dati da un database SQL esistente in Fabric:

sqlpackage /action:extract /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /targetfile:"C:\extracted.dacpac" /p:ExtractAllTableData=true  /p:ExtractReferencedServerScopedElements=false

Per pubblicare un oggetto .dacpac estratto con i dati, non sono necessarie proprietà aggiuntive. Tuttavia, è possibile usare diverse proprietà per controllare il comportamento dell'operazione di pubblicazione:

  • /p:AllowIncompatiblePlatform=true consente la distribuzione di un oggetto .dacpac estratto da una piattaforma diversa, ad esempio il database SQL di Azure, SQL Server.
  • /p:ExcludeObjectTypes=Logins;Users esclude i tipi di oggetto che potrebbero riscontrare problemi di compatibilità durante la pubblicazione nel database SQL in Fabric. Per un elenco completo dei tipi di oggetto che possono essere esclusi, vedere Pubblicazione di SqlPackage.

Analogamente al comando SqlPackage import, prima di pubblicare un .dacpac oggetto nel database SQL in Fabric, è necessario creare il database in Fabric. È possibile creare il database tramite il portale di Fabric o un'altra interfaccia di Fabric. Il comando seguente pubblica l'estratto .dacpac in un database SQL vuoto in Fabric:

sqlpackage /action:publish /sourcefile:"C:\extracted.dacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /p:AllowIncompatiblePlatform=true /p:ExcludeObjectTypes=Logins;Users