Parámetros y propiedades de Extract de SqlPackage

La acción Extract de SqlPackage crea un esquema de una base de datos conectada en un archivo DACPAC (.dacpac). De forma predeterminada, los datos no se incluyen en el archivo. dacpac. Para incluir datos, use la acción Export o las propiedades Extract ExtractAllTableData/TableData.

Nota:

Aunque Microsoft Entra ID es el nuevo nombre de Azure Active Directory (Azure AD), para evitar interrumpir los entornos existentes, Azure AD sigue estando en algunos elementos codificados de forma rígida como campos de interfaz de usuario, proveedores de conexiones, códigos de error y cmdlets. En este artículo, los dos nombres son intercambiables.

Sintaxis de línea de comandos

SqlPackage inicia las acciones especificadas usando los parámetros, las propiedades y las variables de SQLCMD especificadas en la línea de comandos.

SqlPackage /Action:Extract {parameters} {properties}

Nota

Cuando se extrae una base de datos con credenciales de contraseña (por ejemplo, un usuario de autenticación SQL), la contraseña se sustituye por otra diferente con la complejidad adecuada. Los usuarios de SqlPackage o DacFx deben cambiar la contraseña una vez que se haya publicado el archivo .dacpac.

Ejemplos

# 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;"

Parámetros de la acción Extract

Parámetro Forma corta Value Descripción
/AccessToken: /at: {string} Especifica el token de acceso de autenticación basada en tokens que se usará al conectarse a la base de datos de destino.
/Action: /a: Extract Especifica la acción que se va a realizar.
/AzureCloudConfig: /acc: {string} Especifica los puntos de conexión personalizados para conectarse a Microsoft Entra ID en el formato "AzureActiveDirectoryAuthority={value};DatabaseServicePrincipalName={value}".
/Diagnostics: /d: {True|False} Especifica si la salida del registro de diagnóstico es la consola. El valor predeterminado es False.
/ DiagnosticsFile: /df: {string} Especifica un archivo para almacenar los registros de diagnóstico.
/MaxParallelism: /mp: {int} Especifica el nivel de paralelismo para las operaciones simultáneas que se ejecutan en una base de datos. El valor predeterminado es 8.
/OverwriteFiles: /of: {True|False} Especifica si SqlPackage debe sobrescribir los archivos existentes. Si se especifica false, SqlPackage anula la acción si se encuentra un archivo existente. El valor predeterminado es True.
/Properties: /p: {PropertyName}={Value} Especifica un par de nombre y valor para una propiedad específica de acción; {PropertyName}={Value}.
/Quiet: /q: {True|False} Especifica si se suprimen los comentarios detallados. El valor predeterminado es False.
/SourceConnectionString: /scs: {string} Especifica una cadena de conexión de SQL Server o SQL Azure válida para la base de datos de origen. Si se especifica este parámetro, lo usan exclusivamente los demás parámetros de origen.
/SourceDatabaseName: /sdn: {string} Define el nombre de la base de datos de origen.
/SourceEncryptConnection: /sec: {Optional|Mandatory|Strict|True|False} Especifica si se debe usar cifrado SQL para la conexión de base de datos de origen. El valor predeterminado es True.
/SourceHostNameInCertificate: /shnic: {string} Especifica el valor que se usará para validar el certificado de origen SSL o TLS de SQL Server cuando el nivel de comunicación se cifre mediante TLS.
/SourcePassword: /sp: {string} En escenarios de autenticación de SQL Server, define la palabra clave que se va a usar para acceder a la base de datos de origen.
/SourceServerName: /ssn: {string} Define el nombre del servidor que hospeda la base de datos de origen.
/SourceTimeout: /st: {int} Especifica el tiempo de espera para establecer una conexión con la base de datos de origen, en segundos.
/SourceTrustServerCertificate: /stsc: {True|False} Especifica si se usará TLS para cifrar la conexión con la base de datos de origen y no tener que recorrer la cadena de certificados para validar la confianza. El valor predeterminado es False.
/SourceUser: /su: {string} En escenarios de autenticación de SQL Server, define el usuario de SQL Server que se va a usar para acceder a la base de datos de origen.
/TargetFile: /tf: {string} Especifica un archivo de destino (es decir, un archivo. dacpac) en el almacenamiento local que se va a usar como destino de la acción en lugar de una base de datos. Si se usa este parámetro, el resto de parámetros de destino no serán válidos. Este parámetro no será válido para acciones que solo admitan destinos de base de datos.
/TenantId: /tid: {string} Representa el identificador de suscriptor de Microsoft Entra o el nombre de dominio. Esta opción se requiere para admitir usuarios de Microsoft Entra invitados o importados, así como cuentas Microsoft (MSA) como outlook.com, hotmail.com o live.com. Si se omite este parámetro, se usará el identificador de suscriptor predeterminado para Microsoft Entra ID, suponiendo que el usuario autenticado sea un usuario nativo para este suscriptor. Sin embargo, en este caso no se admiten usuarios invitados o importados ni cuentas de Microsoft hospedadas en este Microsoft Entra ID y se producirá un error en la operación.
Para más información, consulte Autenticación universal con SQL Database y Azure Synapse Analytics (compatibilidad de SSMS con MFA).
/ThreadMaxStackSize: /tmss: {int} Especifica el tamaño máximo en megabytes para el subproceso que ejecuta la acción SqlPackage. Esta opción solo debe usarse al encontrar excepciones de desbordamiento de pila que se producen al analizar instrucciones de Transact-SQL muy grandes.
/UniversalAuthentication: /ua: {True|False} Especifica si se debe usar la autenticación universal. Cuando se establece en true, el protocolo de autenticación interactiva se activa y admite MFA. Esta opción también se puede usar para la autenticación de Microsoft Entra sin MFA, mediante un protocolo interactivo que requiere que el usuario escriba su nombre de usuario y contraseña o autenticación integrada (credenciales de Windows). Cuando /UniversalAuthentication se establece en True, no se puede especificar ninguna autenticación de Microsoft Entra en SourceConnectionString (/scs). Cuando /UniversalAuthentication se establece en False, se debe especificar la autenticación de Microsoft Entra en SourceConnectionString (/scs).
Para más información, consulte Autenticación universal con SQL Database y Azure Synapse Analytics (compatibilidad de SSMS con MFA).

Propiedades específicas de la acción Extract

Propiedad Valor Descripción
/p: AzureSharedAccessSignatureToken=(STRING) Token de firma de acceso compartido (SAS) de Azure. Consulte SqlPackage para Azure Synapse Analytics y SqlPackage con datos en archivos Parquet.
/p: AzureStorageBlobEndpoint=(STRING) Punto de conexión de Azure Blob Storage. Consulte SqlPackage para Azure Synapse Analytics y SqlPackage con datos en archivos Parquet.
/p: AzureStorageContainer=(STRING) Contenedor de Azure Blob Storage. Consulte SqlPackage para Azure Synapse Analytics y SqlPackage con datos en archivos Parquet.
/p: AzureStorageKey=(STRING) Clave de cuenta de Azure Storage. Consulte SqlPackage para Azure Synapse Analytics y SqlPackage con datos en archivos Parquet.
/p: AzureStorageRootPath=(STRING) Ruta de acceso raíz de almacenamiento dentro del contenedor. Sin esta propiedad, el valor predeterminado de la ruta de acceso es servername/databasename/timestamp/. Consulte SqlPackage para Azure Synapse Analytics y SqlPackage con datos en archivos Parquet.
/p: CommandTimeout=(INT32 '60') Especifica el tiempo de espera de comando en segundos cuando se ejecutan consultas en SQL Server.
/p: CompressionOption=({Normal|Maximum|Fast|SuperFast|NotCompressed} 'Normal') Especifica el tipo de compresión.
/p: DacApplicationDescription=(STRING) Define la descripción de la aplicación que se va a guardar en los metadatos del DACPAC.
/p: DacApplicationName=(STRING) Define el nombre de la aplicación que se va a guardar en los metadatos del DACPAC. El valor predeterminado es el nombre de la base de datos.
/p: DacMajorVersion=(INT32 '1') Define la versión principal que se va a guardar en los metadatos del DACPAC.
/p: DacMinorVersion=(INT32 '0') Define la versión secundaria que se va a guardar en los metadatos del DACPAC.
/p: DatabaseLockTimeout=(INT32 '60') Especifica el tiempo de expiración de bloqueo de la base de datos en segundos al ejecutar consultas en SQLServer. Use -1 para esperar indefinidamente.
/p: ExtractAllTableData=(BOOLEAN 'False') Indica si se extraen los datos de todas las tablas de usuario. Si es "true", se extraen los datos de todas las tablas de usuario y no se pueden especificar tablas de usuario individuales para la extracción de datos. Si es "false", especifique una o varias tablas de usuario de las que extraer datos.
/p: ExtractApplicationScopedObjectsOnly=(BOOLEAN 'True') Si se establece en true, solo se extraen los objetos con ámbito de aplicación para el origen especificado. Si se establece en false, se extraen todos los objetos para el origen especificado.
/p: ExtractReferencedServerScopedElements=(BOOLEAN 'True') Si se establece en true, se extraen los objetos de inicio de sesión, de auditoría de servidor y de credencial a los que hacen referencia los objetos de base de datos de origen.
/p: ExtractTarget=({DacPac|File|Flat|ObjectType|Schema|SchemaObjectType} 'DacPac') Especifica formatos de salida alternativos del esquema de base de datos, el valor predeterminado es "DacPac" para generar un único archivo .dacpac. Las opciones adicionales generan uno o varios archivos .sql organizados por "SchemaObjectType" (archivos en carpetas para cada tipo de esquema y objeto), "Schema" (archivos en carpetas para cada esquema), "ObjectType" (archivos en carpetas para cada tipo de objeto), "Flat" (todos los archivos de la misma carpeta) o "File" (1 único archivo).
/p: ExtractUsageProperties=(BOOLEAN 'False') Especifica si las propiedades de uso, como el número de filas de tabla o el tamaño del índice, se extraerán de la base de datos.
/p: HashObjectNamesInLogs=(BOOLEAN 'False') Especifica si se deben reemplazar todos los nombres de objeto de los registros por un valor hash aleatorio.
/p: IgnoreExtendedProperties=(BOOLEAN 'False') Especifica si se deben omitir las propiedades extendidas.
/p: IgnorePermissions=(BOOLEAN 'True') Especifica si se deben omitir los permisos.
/p: IgnoreUserLoginMappings=(BOOLEAN 'False') Especifica si se omiten las relaciones entre usuarios e inicios de sesión.
/p: LongRunningCommandTimeout=(INT32 '0') Especifica el tiempo de espera del comando de larga duración en segundos al ejecutar consultas en SQL Server. Use 0 para esperar indefinidamente.
/p: Storage=({File|Memory}) Especifica el tipo de almacenamiento de seguridad para el modelo de esquema que se usa durante la extracción. "Memory" es el valor predeterminado en la versión .NET Core de SqlPackage. "File" solo está disponible y es el valor predeterminado en la versión .NET Framework de SqlPackage.
/p: TableData=(STRING) Indica la tabla de la que se extraerán los datos. Especifique el nombre de tabla con o sin corchetes en ambas partes del nombre en el siguiente formato: nombre_esquema.identificador_tabla. Esta propiedad se puede especificar varias veces para indicar diversas opciones. Se aplica a los datos extraídos a los archivos .dacpac y Parquet.
/p: TempDirectoryForTableData=(STRING) Especifica el directorio temporal que se usará para almacenar en búfer los datos de la tabla antes de escribirlos en el archivo de paquete.
/p: VerifyExtraction=(BOOLEAN 'False') Especifica si debe comprobarse el modelo de esquema extraído.

Pasos siguientes