SqlPackage 내보내기 작업은 연결된 데이터베이스를 BACPAC 파일(.bacpac)로 내보냅니다. 기본적으로 모든 테이블의 데이터가 .bacpac 파일에 포함됩니다. 필요에 따라 데이터를 내보낼 테이블의 하위 집합만 지정할 수 있습니다. Export 작업은 SqlPackage의 데이터베이스 이식성 기능의 일부입니다. 내보내기가 트랜잭션적으로 일관되려면 내보내기 중에 쓰기 작업이 발생하지 않거나 데이터베이스의 트랜잭션 일치 복사본 에서 내보내고 있는지 확인해야 합니다.
Note
Microsoft Entra ID는 Azure AD(Azure Active Directory)의 새 이름이지만, 기존 환경의 중단을 방지하기 위해 UI 필드, 연결 공급자, 오류 코드 및 cmdlet과 같은 일부 하드 코딩된 요소에는 여전히 Azure AD가 남아 있습니다. 이 문서에서는 두 이름을 혼용할 수 있습니다.
Note
SqlPackage 내보내기는 200GB 미만의 데이터베이스에 가장 적합합니다. 더 큰 데이터베이스의 경우 이 문서에서 사용할 수 있는 속성과 SqlPackage 문제 해결의 팁을 사용하여 작업을 최적화하거나 parquet 파일의 데이터를 통해 데이터베이스 이식성을 확보할 수 있습니다.
Command-line syntax
SqlPackage는 명령줄에 지정된 매개 변수, 속성 및 SQLCMD 변수를 사용하여 지정된 작업을 시작합니다.
SqlPackage /Action:Export {parameters} {properties}
Required parameters
Export 작업을 수행하려면 만들 .bacpac 파일의 이름과 위치를 지정하는 TargetFile 매개 변수가 필요합니다. 이 위치는 명령을 실행하는 사용자가 작성할 수 있어야 하며 포함하는 폴더가 있어야 합니다.
Export 작업을 수행하려면 다음 조합을 통해 데이터베이스 원본도 지정해야 합니다.
-
SourceServerName및SourceDatabaseName매개 변수 또는 -
SourceConnectionString매개 변수.
Examples
# example export from Azure SQL Database using SQL authentication and a connection string
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
/SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Persist Security Info=False;User ID=sqladmin;Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# example export using short form parameter names, skips schema validation
SqlPackage /a:Export /ssn:"{yourserver}.database.windows.net,1433" /sdn:"AdventureWorksLT" /su:"sqladmin" \
/sp:"{your_password}" /tf:"C:\AdventureWorksLT.bacpac" /p:VerifyExtraction=False
# example export using Microsoft Entra managed identity
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
/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 export connecting using Microsoft Entra username and password
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
/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 export connecting using Microsoft Entra universal authentication
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" /UniversalAuthentication:True \
/SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
내보내기 작업 매개 변수
| Parameter | Short Form | Value | Description |
|---|---|---|---|
| /AccessToken: | /at: | {string} | 대상 데이터베이스에 연결할 때 사용할 액세스 토큰 기반 인증 액세스 토큰을 지정합니다. |
| /Action: | /a: | Export | 수행할 작업을 지정합니다. |
| /AzureCloudConfig: | /acc: | {string} | Microsoft Entra ID에 연결하는 데 필요한 사용자 지정 엔드포인트를 AzureActiveDirectoryAuthority={value};DatabaseServicePrincipalName={value}" 형식으로 지정합니다. |
| /Diagnostics: | /d: | {True|False} | 진단 로깅이 콘솔로 출력되는지 여부를 지정합니다. 기본값은 False입니다. |
| /DiagnosticsFile: | /df: | {string} | 진단 로그를 저장할 파일을 지정합니다. |
| /DiagnosticsLevel: | /dl | {None|Off|Critical|Error|Warning|Information|Verbose} | 필터링된 진단 파일의 추적 메시지 수준을 지정합니다. |
| /MaxParallelism: | /mp: | {int} | 데이터베이스에 대해 실행 중인 동시 작업에 대한 병렬 처리 수준을 지정합니다. 기본값은 8입니다. |
| /OverwriteFiles: | /of: | {True|False} | SqlPackage가 기존 파일을 덮어써야 할지 여부를 지정합니다. False를 지정하면 기존 파일이 나타나는 경우 SqlPackage에서 작업이 중단됩니다. 기본값은 True입니다. |
| /Properties: | /p: | {PropertyName}={Value} | 작업별 속성의 이름 값 쌍을 지정합니다. {PropertyName}={Value}. |
| /Quiet: | /q: | {True|False} | 자세한 피드백을 무시할지 여부를 지정합니다. 기본값은 False입니다. |
| /SourceConnectionString: | /scs: | {string} | 원본 데이터베이스에 대한 유효한 SQL Server/Azure 연결 문자열을 지정합니다. 지정된 경우, 이 매개 변수는 다른 모든 원본 매개 변수를 배타적으로 사용합니다. |
| /SourceDatabaseName: | /sdn: | {string} | 원본 데이터베이스의 이름을 정의합니다. |
| /SourceEncryptConnection: | /sec: | {Optional|Mandatory|Strict|True|False} | 원본 데이터베이스 연결에 대해 SQL 암호화를 사용할지 여부를 지정합니다. 기본값은 True입니다. |
| /SourceHostNameInCertificate: | /shnic: | {string} | TLS를 사용하여 통신 계층을 암호화할 때 원본 SQL Server TLS/SSL 인증서의 유효성을 검사하는 데 사용되는 값을 지정합니다. |
| /SourcePassword: | /sp: | {string} | SQL Server 인증 시나리오에서 원본 데이터베이스에 액세스하는 데 사용할 암호를 정의합니다. |
| /SourceServerName: | /ssn: | {string} | 원본 데이터베이스를 호스팅하는 서버의 이름을 정의합니다. |
| /SourceTimeout: | /st: | {int} | 원본 데이터베이스에 대한 연결을 설정하는 데 대한 제한 시간(초)을 지정합니다. |
| /SourceTrustServerCertificate: | /stsc: | {True|False} | 원본 데이터베이스 연결을 암호화하고 신뢰의 유효성을 검증하기 위한 인증서 체인 검색을 건너뛰는 데 TLS를 사용할지 여부를 지정합니다. 기본값은 False입니다. |
| /SourceUser: | /su: | {string} | SQL Server 인증 시나리오에서 원본 데이터베이스에 액세스하는 데 사용할 SQL Server 사용자를 정의합니다. |
| /TargetFile: | /tf: | {string} | 데이터베이스 대신 작업 대상으로 사용될 대상 파일(.dacpac 파일)을 지정합니다. 이 매개 변수를 사용하는 경우 다른 대상 매개 변수가 무효화됩니다. 이 매개 변수는 데이터베이스 대상만 지원하는 동작에는 유효하지 않습니다. |
| /TenantId: | /tid: | {string} | Microsoft Entra 테넌트 ID 또는 도메인 이름을 나타냅니다. 이 옵션은 outlook.com, hotmail.com 또는 live.com과 같은 Microsoft 계정뿐만 아니라 게스트 또는 가져온 Microsoft Entra 사용자를 지원해야 합니다. 이 매개 변수를 생략하면 인증된 사용자가 이 테넌트의 기본 사용자라고 가정하여 Microsoft Entra ID의 기본 테넌트 ID가 사용됩니다. 그러나 이 경우 이 Microsoft Entra ID에서 호스트되는 모든 게스트 또는 가져온 사용자 및/또는 Microsoft 계정은 지원되지 않으며 작업이 실패합니다. 자세한 내용은 SQL Database 및 Azure Synapse Analytics를 사용하여 유니버설 인증(MFA에 대한 SSMS 지원)을 참조하세요. |
| /ThreadMaxStackSize: | /tmss: | {int} | SqlPackage 작업을 실행하는 스레드의 최대 크기(MB)를 지정합니다. 이 옵션은 매우 큰 Transact-SQL 문을 구문 분석할 때 발생하는 스택 오버플로 예외가 발생하는 경우에만 사용해야 합니다. |
| /UniversalAuthentication: | /ua: | {True|False} | 유니버설 인증을 사용해야 하는지 여부를 지정합니다. True로 설정되면 대화형 인증 프로토콜이 MFA를 지원하도록 활성화됩니다. 이 옵션은 사용자가 사용자 이름 및 암호 또는 통합 인증(Windows 자격 증명)을 입력해야 하는 대화형 프로토콜을 사용하여 MFA가 없는 Microsoft Entra 인증에도 사용할 수 있습니다. /UniversalAuthentication을 True로 설정하면 SourceConnectionString(/scs)에 Microsoft Entra 인증을 지정할 수 없습니다. /UniversalAuthentication을 False로 설정하면 SourceConnectionString(/scs)에 Microsoft Entra 인증을 지정해야 합니다. 자세한 내용은 SQL Database 및 Azure Synapse Analytics를 사용하여 유니버설 인증(MFA에 대한 SSMS 지원)을 참조하세요. |
Export 동작과 관련된 속성
| Property | Value | Description |
|---|---|---|
| /p: | CommandTimeout=(INT32 '60') | SQL Server에 대한 쿼리를 실행할 때 명령 시간 제한(초)을 지정합니다. |
| /p: | CompressionOption=({Normal|Maximum|Fast|SuperFast|NotCompressed} 'Normal') | 압축 형식을 지정합니다. |
| /p: | DatabaseLockTimeout=(INT32 '60') | SQLServer에 대해 쿼리를 실행할 때의 데이터베이스 잠금 시간 제한(초)를 지정합니다. 무기한 대기하려면 -1을 사용합니다. |
| /p: | HashObjectNamesInLogs=(BOOLEAN 'False') | 로그의 모든 개체 이름을 임의의 해시 값으로 바꿀지 여부를 지정합니다. |
| /p: | IgnoreIndexesStatisticsOnEnclaveEnabledColumns=(BOOLEAN 'False') | 열의 임의 암호화 및 enclave 기능이 있는 열 암호화 키로 암호화된 경우 해당 열의 인덱스나 통계를 무시할지 여부를 지정합니다(생성된 bacpac에 포함되지 않음). 기본적으로 (false), 임의 암호화 및 enclave 사용 열 암호화 키로 암호화된 열의 인덱스나 통계는 내보내기 작업을 차단합니다. |
| /p: | LongRunningCommandTimeout=(INT32 '0') | SQL Server에 대한 쿼리를 실행할 때 장기 명령 시간 제한(초)을 지정합니다. 무기한 대기하려면 0을 사용합니다. |
| /p: | Storage=({File|Memory}) | 추출 중에 사용되는 스키마 모델에 대한 지원 스토리지 유형을 지정합니다. 'Memory'는 SqlPackage의 .NET Core 버전에 대한 기본값입니다. 'File'은 SqlPackage의 .NET Framework 버전에 대해서만 사용할 수 있으며, 기본값입니다. |
| /p: | TableData=(STRING) | 데이터를 추출할 테이블을 나타냅니다. schema_name.table_identifier 형식에서 이름 부분이 괄호로 묶이거나 묶이지 않은 형태로 테이블 이름을 지정하십시오. 이 속성은 여러 옵션을 나타내기 위해 여러 번 지정할 수 있습니다. |
| /p: | TargetEngineVersion=({Default|Latest|V11|V12} 'Latest') | 이 속성은 더 이상 사용되지 않으며 사용하지 않는 것이 좋습니다. Azure SQL Database의 대상 엔진에 필요한 버전을 지정합니다. |
| /p: | TempDirectoryForTableData=(STRING) | 패키지 파일에 기록되기 전에 테이블 데이터를 버퍼링하는 데 사용되는 대체 임시 디렉터리를 지정합니다. 이 위치에 필요한 공간은 클 수 있으며 전체 데이터베이스 크기를 기준으로 합니다. |
| /p: | VerifyExtraction=(BOOLEAN 'True') | 추출된 스키마 모델을 확인할지 여부를 지정합니다. true로 설정하면 dacpac 또는 bacpac에서 스키마 유효성 검사 규칙이 실행됩니다. |
| /p: | VerifyFullTextDocumentTypesSupported=(BOOLEAN 'False') | Microsoft Azure SQL Database v12에 지원되는 전체 텍스트 문서 종류를 확인할지 여부를 지정합니다. |
Next Steps
- SqlPackage에 대해 자세히 알아봅니다.
- SqlPackage 문제 해결
- Azure Blob Storage로 내보내기