Parametri e proprietà di Extract di SqlPackage

L'azione Extract di SqlPackage crea uno schema di un database connesso in un file DACPAC (con estensione dacpac). Per impostazione predefinita, i dati non sono inclusi nel file con estensione dacpac. Per includere i dati, usare l'azione Esporta o usare le proprietà Extract ExtractAllTableData/TableData.

Nota

Anche se Microsoft Entra ID è il nuovo nome per Azure Active Directory (Azure AD), per evitare l'interruzione degli ambienti esistenti, Azure AD rimane ancora in alcuni elementi hardcoded, ad esempio campi dell'interfaccia utente, provider di connessioni, codici di errore e cmdlet. In questo articolo i due nomi sono intercambiabili.

Sintassi della riga di comando

SqlPackage avvia le azioni specificate usando i parametri, le proprietà e le variabili SQLCMD indicati nella riga di comando.

SqlPackage /Action:Extract {parameters} {properties}

Nota

Quando viene estratto un database con credenziali con password (ad esempio, un utente di autenticazione SQL), la password viene sostituita con una password diversa con una complessità adeguata. Gli utenti di SqlPackage o DacFx devono modificare la password dopo la pubblicazione del pacchetto dacpac.

Esempi

# example extract to create a schema-only .dacpac file connecting using SQL authentication
SqlPackage /Action:Extract /TargetFile:{filename}.dacpac /DiagnosticsFile:{logFile}.log /p:ExtractAllTableData=false /p:VerifyExtraction=true \
    /SourceServerName:{serverFQDN} /SourceDatabaseName:{databaseName} /SourceUser:{username} /SourcePassword:{password}

# example extract to create a .sql file containing the schema definition of the database
SqlPackage /Action:Extract /TargetFile:{filename}.dacpac /DiagnosticsFile:{logFile}.log /SourceServerName:{serverFQDN} \
    /SourceDatabaseName:{databaseName} /SourceUser:{username} /SourcePassword:{password} /p:ExtractTarget=File

# example extract to create a .dacpac file with data connecting using SQL authentication
SqlPackage /Action:Extract /TargetFile:{filename}.dacpac /DiagnosticsFile:{logFile}.log /p:ExtractAllTableData=true /p:VerifyExtraction=true \
    /SourceServerName:{serverFQDN} /SourceDatabaseName:{databaseName} /SourceUser:{username} /SourcePassword:{password}


# example extract to create a schema-only .dacpac file connecting using Microsoft Entra managed identity
SqlPackage /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Authentication=Active Directory Managed Identity;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"


# example extract to create a schema-only .dacpac file connecting using Microsoft Entra username and password
SqlPackage /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Authentication=Active Directory Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User ID={yourusername};Password={yourpassword}"


# example extract to create a schema-only .dacpac file connecting using Microsoft Entra universal authentication
SqlPackage /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" /UniversalAuthentication:True \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# example extract to create a schema-only .dacpac file connecting using an access token associated with a service principal
$Account = Connect-AzAccount -ServicePrincipal -Tenant $Tenant -Credential $Credential
$AccessToken_Object = (Get-AzAccessToken -Account $Account -Resource "https://database.windows.net/")
$AccessToken = $AccessToken_Object.Token

SqlPackage /at:$AccessToken /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# OR
SqlPackage /at:$($AccessToken_Object.Token) /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

Parametri per l'azione Extract

Parametro Forma breve valore Description
/AccessToken: /at: {string} Specifica il token di accesso per l'autenticazione basata su token da usare per la connessione al database di destinazione.
/Action: /a: Estrazione Specifica l'azione da eseguire.
/AzureCloudConfig: /acc: {string} Specifica gli endpoint personalizzati per la connessione a Microsoft Entra ID nel formato: AzureActiveDirectoryAuthority={value};DatabaseServicePrincipalName={value}".
/Diagnostics: /d: {True|False} Specifica se la registrazione diagnostica viene restituita come output nella console. Il valore predefinito è False.
/DiagnosticsFile: /df: {string} Specifica un file per archiviare i log di diagnostica.
/MaxParallelism: /mp: {int} Specifica il grado di parallelismo per le operazioni simultanee in esecuzione su un database. Il valore predefinito è 8.
/OverwriteFiles: /of: {True|False} Specifica se i file esistenti devono essere sovrascritti tramite SqlPackage. Se si specifica False e viene rilevato un file esistente, SqlPackage interrompe l'azione. Il valore predefinito è True.
/Properties: /p: {NomeProprietà}={Valore} Specifica una coppia nome/valore per una proprietà specifica dell'azione; {NomeProprietà}={Valore}.
/Quiet: /q: {True|False} Specifica se la notifica dettagliata dell'interfaccia utente viene eliminata. Il valore predefinito è False.
/SourceConnectionString: /scs: {string} Specifica una stringa di connessione valida di SQL Server o Azure al database di origine. Se questo parametro viene specificato, deve essere usato esclusivamente per altri parametri di origine.
/SourceDatabaseName: /sdn: {string} Definisce il nome del database di origine.
/SourceEncryptConnection: /sec: {Optional|Mandatory|Strict|True|False} Specifica se deve essere utilizzata la crittografia SQL per la connessione al database di origine. Il valore predefinito è True.
/SourceHostNameInCertificate: /shnic: {string} Specifica il valore che viene usato per la convalida del certificato TLS/SSL di SQL Server di origine quando il livello di comunicazione è crittografato tramite TLS.
/SourcePassword: /sp: {string} Per gli scenari di autenticazione di SQL Server, definisce la password da usare per accedere al database di origine.
/SourceServerName: /ssn: {string} Definisce il nome del server che ospita il database di origine.
/SourceTimeout: /st: {int} Specifica il timeout in secondi per una connessione al database di origine.
/SourceTrustServerCertificate: /stsc: {True|False} Specifica se usare TLS per crittografare la connessione al database di origine e ignorare l'analisi della catena di certificati per convalidare l'attendibilità. Il valore predefinito è False.
/SourceUser: /su: {string} Per gli scenari di autenticazione di SQL Server, definisce l'utente SQL Server da usare per accedere al database di origine.
/TargetFile: /tf: {string} Specifica un file di destinazione, ovvero un file DACPAC, nello spazio di archiviazione locale da usare come destinazione dell'azione anziché di un database. Se si usa questo parametro, non deve essere valido nessun altro parametro di destinazione. Questo parametro non sarà valido per le azioni che supportano solo le destinazioni del database.
/TenantId: /tid: {string} Rappresenta l'ID tenant o il nome di dominio di Microsoft Entra. Questa opzione è necessaria per il supporto degli utenti guest o importati di Microsoft Entra e per gli account Microsoft, ad esempio outlook.com, hotmail.com o live.com. Se questo parametro viene omesso, verrà usato l'ID tenant predefinito per Microsoft Entra ID, supponendo che l'utente autenticato sia un utente nativo per questo tenant. In questo caso, tuttavia, gli utenti guest o importati e/o gli account Microsoft ospitati in questa istanza di Microsoft Entra ID non sono supportati e l'operazione avrà esito negativo.
Per altre informazioni, vedere Autenticazione universale con il database SQL e Azure Synapse Analytics (supporto di SSMS per MFA).
/ThreadMaxStackSize: /tmss: {int} Specifica le dimensioni massime in megabyte per il thread che esegue l'azione di SqlPackage. Questa opzione deve essere usata solo in presenza di eccezioni di stack overflow che si verificano durante l'analisi di istruzioni Transact-SQL molto grandi.
/UniversalAuthentication: /ua: {True|False} Specifica se deve essere usata l'autenticazione universale. Se impostato su True, viene attivato il protocollo di autenticazione interattivo per supportare l'autenticazione a più fattori. Questa opzione può essere usata anche per l'autenticazione di Microsoft Entra senza autenticazione a più fattori, usando un protocollo interattivo che richiede all'utente di immettere il nome utente e la password o l'autenticazione integrata (credenziali di Windows). Se /UniversalAuthentication è impostato su True, non è possibile specificare l'autenticazione di Microsoft Entra in SourceConnectionString (/scs). Se /UniversalAuthentication è impostato su False, l'autenticazione di Microsoft Entra deve essere specificata in SourceConnectionString (/scs).
Per altre informazioni, vedere Autenticazione universale con il database SQL e Azure Synapse Analytics (supporto di SSMS per MFA).

Proprietà specifiche dell'azione Estrai

Proprietà valore Description
/p: AzureSharedAccessSignatureToken=(STRING) Token di firma di accesso condiviso di Azure Vedere SqlPackage per Azure Synapse Analytics e SqlPackage con dati nei file Parquet.
/p: AzureStorageBlobEndpoint=(STRING) Endpoint di Archiviazione BLOB di Azure Vedere SqlPackage per Azure Synapse Analytics e SqlPackage con dati nei file Parquet.
/p: AzureStorageContainer=(STRING) Contenitore dell'archiviazione BLOB di Azure Vedere SqlPackage per Azure Synapse Analytics e SqlPackage con dati nei file Parquet.
/p: AzureStorageKey=(STRING) Chiave dell'account di archiviazione di Azure Vedere SqlPackage per Azure Synapse Analytics e SqlPackage con dati nei file Parquet.
/p: AzureStorageRootPath=(STRING) Percorso radice di archiviazione all'interno del contenitore. Senza questa proprietà, per impostazione predefinita il percorso è servername/databasename/timestamp/. Vedere SqlPackage per Azure Synapse Analytics e SqlPackage con dati nei file Parquet.
/p: CommandTimeout=(INT32 '60') Specifica il timeout del comando in secondi quando si eseguono query in SQL Server.
/p: CompressionOption=({Normal|Maximum|Fast|SuperFast|NotCompressed} 'Normal') Specifica il tipo di compressione.
/p: DacApplicationDescription=(STRING) Definisce la descrizione dell'applicazione da archiviare nei metadati del pacchetto di applicazione livello dati.
/p: DacApplicationName=(STRING) Definisce il nome dell'applicazione da archiviare nei metadati del pacchetto di applicazione livello dati. Il valore predefinito corrisponde al database del database.
/p: DacMajorVersion=(INT32 '1') Definisce il numero di versione principale da archiviare nei metadati del pacchetto di applicazione livello dati.
/p: DacMinorVersion=(INT32 '0') Definisce il numero di versione secondario da archiviare nei metadati del pacchetto di applicazione livello dati.
/p: DatabaseLockTimeout=(INT32 '60') Specifica il timeout del blocco a livello di database in secondi quando si eseguono query su SQL Server. Usare -1 per l'attesa indefinita.
/p: ExtractAllTableData=(BOOLEAN 'False') Indica se vengono estratti i dati di tutte le tabelle utente. Se True, vengono estratti i dati di tutte le tabelle utente e non è possibile specificare tabelle utente singole per l'estrazione dei dati. Se False, specificare una o più tabelle utente da cui estrarre i dati.
/p: ExtractApplicationScopedObjectsOnly=(BOOLEAN 'True') Se true, vengono estratti solo gli oggetti con ambito di applicazione per l'origine specificata. Se false, vengono estratti tutti gli oggetti per l'origine specificata.
/p: ExtractReferencedServerScopedElements=(BOOLEAN 'True') Se true, estrarre gli oggetti Login, Server Audit e Credential a cui fanno riferimento gli oggetti del database di origine.
/p: ExtractTarget=({DacPac|File|Flat|ObjectType|Schema|SchemaObjectType} 'DacPac') Specifica i formati di output alternativi dello schema del database, il valore predefinito è 'DacPac' per l'output di un singolo file .dacpac. Altre opzioni generano uno o più file .sql organizzati in base a 'SchemaObjectType' (file nelle cartelle per ogni schema e tipo di oggetto), 'Schema' (file nelle cartelle per ogni schema), 'ObjectType' (file nelle cartelle per ogni tipo di oggetto), 'Flat' (tutti i file nella stessa cartella) o 'File' (1 singolo file).
/p: ExtractUsageProperties=(BOOLEAN 'False') Specifica se vengono estratte dal database le proprietà di utilizzo quali, ad esempio, il numero di righe della tabella e le dimensioni dell'indice.
/p: HashObjectNamesInLogs=(BOOLEAN 'False') Specifica se sostituire tutti i nomi degli oggetti nei log con un valore hash casuale.
/p: IgnoreExtendedProperties=(BOOLEAN 'False') Specifica se devono essere ignorate le proprietà estese.
/p: IgnorePermissions=(BOOLEAN 'True') Specifica se devono essere ignorate le autorizzazioni.
/p: IgnoreUserLoginMappings=(BOOLEAN 'False') Specifica se le relazioni tra utenti e account di accesso vengono ignorate.
/p: LongRunningCommandTimeout=(INT32 '0') Specifica il timeout del comando a esecuzione prolungata in secondi quando si eseguono query su SQL Server. Usare 0 per l'attesa indefinita.
/p: Storage=({File|Memory}) Specifica il tipo di archivio di backup per il modello schema utilizzato durante l'estrazione. 'Memory' è l'impostazione predefinita per la versione di .NET Core di SqlPackage. 'File' è disponibile e l'impostazione predefinita solo per .NET Framework di SqlPackage.
/p: TableData=(STRING) Indica la tabella da cui verranno estratti i dati. Specificare il nome della tabella con o senza parentesi che racchiudono le parti che compongono il nome nel formato seguente: nome_schema.identificatore_tabella. Questa proprietà può essere specificata più volte per indicare più opzioni. Si applica ai dati estratti sia ai file .dacpac che ai file Parquet.
/p: TempDirectoryForTableData=(STRING) Specifica la directory temporanea usata per memorizzare nel buffer i dati della tabella prima di essere scritti nel file del pacchetto.
/p: VerifyExtraction=(BOOLEAN 'False') Specifica se il modello di schema estratto deve essere verificato.

Passaggi successivi