알려진 문제, 제한 사항 및 문제 해결

이 문서에서는 Azure Data Studio용 Azure SQL 마이그레이션 확장과 관련된 알려진 문제 및 문제 해결 단계 목록을 제공합니다.

Important

최신 버전의 Integration Runtime(5.28.8488)은 로컬 호스트의 네트워크 파일 공유에 대한 액세스를 방지합니다. 이 보안 조치는 DMS를 사용하여 Azure SQL로 마이그레이션을 수행할 때 발생하는 오류를 발생시킵니다. 네트워크 공유 호스팅이 아닌 다른 컴퓨터에서 Integration Runtime을 실행해야 합니다.

오류 코드: 2007 - CutoverFailedOrCancelled

  • 메시지: Cutover failed or cancelled for database <DatabaseName>. Error details: The restore plan is broken because firstLsn <First LSN> of log backup <URL of backup in Azure Storage container>' is not <= lastLsn <last LSN> of Full backup <URL of backup in Azure Storage container>'. Restore to point in time.

  • 원인: Azure Storage 컨테이너에 백업이 잘못 배치되면 오류가 발생할 수 있습니다. 백업이 네트워크 파일 공유에 배치되는 경우 네트워크 연결 이슈로 인해 이 오류가 발생할 수도 있습니다.

  • 권장 사항: Azure Storage 컨테이너의 데이터베이스 백업이 올바른지 확인하세요. 네트워크 파일 공유를 사용하는 경우 이 오류를 일으키는 네트워크 관련 이슈 및 지연이 있을 수 있습니다. 프로세스가 완료될 때까지 기다리세요.

오류 코드: 2009 - MigrationRestoreFailed

  • 메시지: Migration for Database 'DatabaseName' failed with error cannot find server certificate with thumbprint.

  • 원인: 데이터를 마이그레이션하기 전에 TDE(투명한 데이터 암호화)로 보호되는 데이터베이스에서 원본 SQL Server 인스턴스의 인증서를 대상 Azure SQL Managed Instance 또는 Azure Virtual Machine의 SQL Server로 마이그레이션해야 합니다.

  • 권장 사항: TDE 인증서를 대상 인스턴스로 마이그레이션하고 프로세스를 다시 시도하세요. TDE 지원 데이터베이스 마이그레이션에 대한 자세한 내용은 자습서: TDE 지원 데이터베이스(미리 보기)를 Azure Data Studio에서 Azure SQL로 마이그레이션을 참조하세요.

  • 메시지: Migration for Database <DatabaseName> failed with error 'Non retriable error occurred while restoring backup with index 1 - 3169 The database was backed up on a server running version %ls. That version is incompatible with this server, which is running version %ls. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server.

  • 원인: 백업이 생성된 버전보다 오래된 SQL Server 버전으로 SQL Server 백업을 복원할 수 없습니다.

  • 권장 사항: 서로 다른 SQL Server 버전 간의 데이터베이스 복원에 영향을 주는 이슈에서 문제 해결 단계를 참조하세요.

  • 메시지: Migration for Database <DatabaseName> failed with error 'The managed instance has reached its storage limit. The storage usage for the managed instance can't exceed 32768 MBs.

  • 원인: Azure SQL Managed Instance가 리소스 한도에 도달했습니다.

  • 권장 사항: 저장 한도에 대한 자세한 내용은 Azure SQL Managed Instance 리소스 제한 개요를 참조하세요.

  • 메시지: Migration for Database <DatabaseName> failed with error 'Non retriable error occurred while restoring backup with index 1 - 3634 The operating system returned the error '1450(Insufficient system resources exist to complete the requested service.)

  • 원인: DBCC CHECKDB 또는 데이터베이스 스냅샷 생성 중에 데이터베이스 파일에 대해 OS 오류 1450 및 665가 보고됨에 나열된 증상 중 하나가 원인일 수 있습니다.

  • 권장 사항: DBCC CHECKDB 또는 데이터베이스 스냅샷 생성 중에 데이터베이스 파일에 대해 OS 오류 1450 및 665가 보고됨에서 문제 해결 단계를 참조하세요.

  • 메시지: The restore plan is broken because firstLsn <First LSN> of log backup <URL of backup in Azure Storage container>' isn't <= lastLsn <last LSN> of Full backup <URL of backup in Azure Storage container>'. Restore to point in time.

  • 원인: Azure Storage 컨테이너에 백업이 잘못 배치되면 오류가 발생할 수 있습니다. 백업이 네트워크 파일 공유에 배치되는 경우 네트워크 연결 이슈로 인해 이 오류가 발생할 수도 있습니다.

  • 권장 사항: Azure Storage 컨테이너의 데이터베이스 백업이 올바른지 확인하세요. 네트워크 파일 공유를 사용하는 경우 이 오류를 일으키는 네트워크 관련 이슈 및 지연이 있을 수 있습니다. 이 프로세스가 완료될 때까지 기다리세요.

  • 메시지: Migration for Database <Database Name> failed with error 'Non retriable error occurred while restoring backup with index 1 - 3234 Logical file <Name> isn't part of database <Database GUID>. Use RESTORE FILELISTONLY to list the logical file names. RESTORE DATABASE is terminating abnormally.'.

  • 원인: 데이터베이스 백업에 없는 논리적 파일 이름을 지정했습니다. 이 오류의 또 다른 잠재적인 원인은 잘못된 스토리지 계정 컨테이너 이름입니다.

  • 권장 사항: RESTORE FILELISTONLY를 실행하여 백업의 논리적 파일 이름을 확인하세요. RESTORE FILELISTONLY에 대한 자세한 내용은 RESTORE 문 - FILELISTONLY(Transact-SQL)를 참조하세요.

  • 메시지: Migration for Database <Database Name> failed with error 'Azure SQL target resource failed to connect to storage account. Make sure the target SQL VNet is allowed under the Azure Storage firewall rules.'

  • 원인: Azure Storage 방화벽이 Azure SQL 대상에 대한 액세스를 허용하도록 구성되지 않았습니다.

  • 권장 사항: Azure Storage 방화벽 설정에 대한 자세한 내용은 Azure Storage 방화벽 및 가상 네트워크 구성을 참조하세요.

  • 메시지: Migration for Database <Database Name> failed with error 'There are backups from multiple databases in the container folder. Please make sure the container folder has backups from a single database.

  • 원인: 여러 데이터베이스의 백업이 동일한 컨테이너 폴더에 있습니다.

  • 권장 사항: 동일한 Azure Blob Storage 컨테이너를 사용하여 여러 데이터베이스를 Azure SQL Managed Instance로 마이그레이션하는 경우 서로 다른 데이터베이스에 대한 백업 파일을 컨테이너 내의 별도 폴더에 배치해야 합니다. LRS에 대한 자세한 내용은 Log Replay Service(미리 보기)를 사용하여 SQL Server에서 SQL Managed Instance로 데이터베이스 마이그레이션을 참조하세요.

  • 메시지: Migration for Database <Database Name> failed with error 'Non retriable error occurred while restoring backup with index 1 - 12824 The sp_configure value 'contained database authentication' must be set to 1 in order to restore a contained database. You may need to use RECONFIGURE to set the value_in_use. RESTORE DATABASE is terminating abnormally.

  • 원인: 원본 데이터베이스가 포함된 데이터베이스입니다. 포함된 데이터베이스를 복원하려면 특정 구성이 필요합니다. 포함된 데이터베이스에 대한 자세한 내용은 포함된 데이터베이스 사용자를 참조하세요.

  • 권장 사항: 마이그레이션을 시작하기 전에 특정 데이터베이스의 컨텍스트에서 원본 SQL Server에 연결된 다음 쿼리를 실행합니다. 그런 다음 포함된 데이터베이스의 마이그레이션을 다시 시도합니다.

    -- Enable "contained database authentication"
    EXEC sp_configure 'contained', 1;
    RECONFIGURE;
    

    참고 항목

    Azure SQL Managed Instance 오류의 일반적인 문제 해결 단계에 대한 자세한 내용은 Azure SQL Managed Instance에서 알려진 이슈를 참조하세요.

오류 코드: 2012 - TestConnectionFailed

  • 메시지: Failed to test connections using provided Integration Runtime. Error details: 'Remote name could not be resolved.'

  • 원인: 방화벽의 네트워크 설정으로 인해 자체 호스팅 통합 런타임이 서비스 백 엔드에 연결할 수 없습니다.

  • 권장 사항: DNS(Domain Name System) 이슈가 있습니다. 문제를 해결하려면 네트워크 팀에 문의하세요. 자세한 내용은 자체 호스팅 통합 런타임 문제 해결을 참조하세요.

  • 메시지: Failed to test connections using provided Integration Runtime. 'Cannot connect to <File share>. Detail Message: The system could not find the environment option that was entered

  • 원인: 자체 호스팅 통합 런타임이 데이터베이스 백업이 배치된 네트워크 파일 공유에 연결할 수 없습니다.

  • 권장 사항: 네트워크 파일 공유 이름이 올바르게 입력되었는지 확인하세요.

  • 메시지: Failed to test connections using provided Integration Runtime. The file name does not conform to the naming rules by the data store. Illegal characters in path.

  • 원인: 자체 호스팅 통합 런타임이 데이터베이스 백업이 배치된 네트워크 파일 공유에 연결할 수 없습니다.

  • 권장 사항: 네트워크 파일 공유 이름이 올바르게 입력되었는지 확인하세요.

  • 메시지: Failed to test connections using provided Integration Runtime.

  • 원인: 자체 호스팅 통합 런타임에 대한 연결이 실패했습니다.

  • 권장 사항: 자체 호스팅 통합 런타임 문제 해결에서 통합 런타임 연결 오류의 일반적인 문제 해결 단계를 참조하세요.

오류 코드: 2014 - IntegrationRuntimeIsNotOnline

오류 코드: 2030 - AzureSQLManagedInstanceNotReady

  • 메시지: Azure SQL Managed Instance <Instance Name> isn't ready.

  • 원인: Azure SQL Managed Instance가 준비 상태가 아닙니다.

  • 권장 사항: Azure SQL Managed Instance의 배포가 완료되고 준비가 완료될 때까지 기다린 다음, 프로세스를 다시 시도하세요.

오류 코드: 2033 - SqlDataCopyFailed

  • 메시지: Migration for Database <Database> failed in state <state>.

  • 원인: 데이터 이동에 대한 ADF 파이프라인이 실패했습니다.

  • 권장 사항: MigrationStatusDetails 페이지에서 자세한 오류 정보를 확인하세요.

오류 코드: 2038 - MigrationCompletedDuringCancel

  • 메시지: Migration cannot be canceled as Migration was completed during the cancel process. Target server: <Target server> Target database: <Target database>.

  • 원인: 취소 요청이 수신되었지만 취소가 완료되기 전에 마이그레이션이 완료되었습니다.

  • 권장 사항: 별도의 작업이 필요하지 않습니다. 마이그레이션이 성공했습니다.

오류 코드: 2039 - MigrationRetryNotAllowed

  • 메시지: Migration isn't in a retriable state. Migration must be in state WaitForRetry. Current state: <State>, Target server: <Target Server>, Target database: <Target database>.

  • 원인: 마이그레이션이 재시도를 허용하지 않는 상태에서 재시도 요청이 수신되었습니다.

  • 권장 사항: 별도의 작업이 필요하지 않습니다. 마이그레이션이 진행 중이거나 완료되었습니다.

오류 코드: 2040 - MigrationTimeoutWaitingForRetry

  • 메시지: Migration retry timeout limit of 8 hours reached. Target server: <Target Server>, Target database: <Target Database>.

  • 원인: 마이그레이션이 실패했지만 검색할 수 있는 상태로 8시간 동안 유휴 상태였으며 자동으로 취소되었습니다.

  • 권장 사항: 아무 작업도 필요하지 않습니다. 마이그레이션은 취소되었습니다.

오류 코드: 2041 - DataCopyCompletedDuringCancel

  • 메시지: Data copy finished successfully before canceling completed. Target schema is in bad state. Target server: <Target Server>, Target database: <Target Database>.

  • 원인: 취소 요청이 수신되고 데이터 복사가 완료되었지만 대상 데이터베이스 스키마가 원래 상태로 돌아가지 않았습니다.

  • 권장 사항: 원하는 경우 첫 번째 쿼리와 반환된 모든 쿼리를 실행한 다음, 두 번째 쿼리를 실행하는 식으로 반복해서 대상 데이터베이스를 원래 상태로 되돌릴 수 있습니다.

    SELECT [ROLLBACK] FROM [dbo].[__migration_status]
    WHERE STEP in (3,4,6);
    
    SELECT [ROLLBACK] FROM [dbo].[__migration_status]
    WHERE STEP in (5,7,8) ORDER BY STEP DESC;
    

오류 코드: 2042 - PreCopyStepsCompletedDuringCancel

  • 메시지: Pre Copy steps finished successfully before canceling completed. Target database Foreign keys and temporal tables have been altered. Schema migration may be required again for future migrations. Target server: <Target Server>, Target database: <Target Database>.

  • 원인: 취소 요청이 수신되었고 복사할 대상 데이터베이스를 준비하는 단계가 완료되었습니다. 대상 데이터베이스 스키마가 원래 상태로 돌아가지 않았습니다.

  • 권장 사항: 원하는 경우 다음 쿼리와 반환된 모든 쿼리를 실행하여 대상 데이터베이스를 원래 상태로 되돌릴 수 있습니다.

    SELECT [ROLLBACK] FROM [dbo].[__migration_status]
    WHERE STEP in (3,4,6);
    

오류 코드: 2043 - CreateContainerFailed

  • 메시지: Create container <ContainerName> failed with error Error calling the endpoint '<URL>'. Response status code: 'NA - Unknown'. More details: Exception message: 'NA - Unknown [ClientSideException] Invalid Url:<URL>.

  • 원인: 네트워크 연결, DNS 오류, 서버 인증서 유효성 검사 또는 시간 초과와 같은 기본 문제로 인해 요청이 실패했습니다.

  • 권장 사항: 추가 문제 해결 단계는 Azure Data Factory 및 Synapse 파이프라인 문제 해결을 참조하세요.

오류 코드: 2049 - FileShareTestConnectionFailed

  • 메시지: The value of the property '' is invalid: 'Access to <share path> is denied, resolved IP address is <IP address>, network type is OnPremise'.

  • 원인: 데이터베이스 백업이 저장되는 네트워크 공유가 SHIR(자체 호스팅 통합 런타임)과 동일한 컴퓨터에 있습니다.

  • 권장 사항: 최신 버전의 Integration Runtime(5.28.8488)은 로컬 호스트의 네트워크 파일 공유에 대한 액세스를 방지합니다. 네트워크 공유 호스팅이 아닌 다른 컴퓨터에서 Integration Runtime을 실행해야 합니다. 자체 호스팅 통합 런타임을 호스트된하고 다른 컴퓨터에서 네트워크 공유를 현재 마이그레이션 설정으로 사용할 수 없는 경우 DisableLocalFolderPathValidation을 사용하여 옵트아웃하는 옵션을 사용할 수 있습니다.

    참고 항목

    자세한 내용은 로컬 PowerShell을 통해 기존 자체 호스팅 IR 설정을 참조하세요. 보안 수준이 낮으므로 사용하지 않도록 설정하는 옵션을 신중하게 사용합니다.

오류 코드: 2056 - SqlInfoValidationFailed

  • 메시지: CollationMismatch: Source database collation <CollationOptionSource> is not the same as the target database <CollationOptionTarget>. Source database: <SourceDatabaseName> Target database: <TargetDatabaseName>.

  • 원인: 원본 데이터베이스 데이터 정렬이 대상 데이터베이스의 데이터 정렬과 동일하지 않습니다.

  • 권장 사항: 대상 Azure SQL Database 데이터 정렬을 원본 SQL Server 데이터베이스와 동일하게 변경해야 합니다. Azure SQL Database는 기본적으로 SQL_Latin1_General_CP1_CI_AS 데이터 정렬을 사용합니다. 원본 SQL Server 데이터베이스가 다른 데이터 정렬을 사용하는 경우 데이터 정렬이 일치하는 다른 대상 데이터베이스를 다시 만들거나 선택해야 할 수 있습니다. 자세한 내용은 Collation and Unicode Support을 참조하세요.

  • 메시지: TableColumnCollationMismatch: Table <Tablename> with column <columnname> has collation <collationoptionsource> on source but has collation <collationoptiontarget> on target table.

  • 원인: 원본 데이터베이스 테이블 열의 데이터 정렬이 대상 데이터베이스 테이블 열의 데이터 정렬과 동일하지 않습니다.

  • 권장 사항:

    1. Database Migration Service를 사용하여 Azure SQL Database를 대상으로 스키마를 마이그레이션해야 합니다. 블로그를 참조하세요.
    2. 데이터 정렬을 수동으로 변경하려면 이 문서를 따릅니다. 자세한 내용은 Collation and Unicode Support을 참조하세요.
  • 메시지: DatabaseSizeMoreThanMax: No tables were found in the target Azure SQL Database. Check if schema migration was completed beforehand.

  • 원인: 마이그레이션을 위해 선택한 테이블이 대상 Azure SQL Database에 없습니다.

  • 권장 사항: 마이그레이션을 시작하기 전에 대상 데이터베이스 스키마가 만들어졌는지 확인합니다. 대상 데이터베이스 스키마를 배포하는 방법에 대한 자세한 내용은 SQL Database 프로젝트 확장을 참조하세요.

  • 메시지: DatabaseSizeMoreThanMax: The source database size <Source Database Size> exceeds the maximum allowed size of the target database <Target Database Size>. Check if the target database has enough space.

  • 원인: 대상 데이터베이스에 충분한 공간이 없습니다.

  • 권장 사항: 마이그레이션을 시작하기 전에 대상 데이터베이스 스키마가 만들어졌는지 확인합니다. 대상 데이터베이스 스키마를 배포하는 방법에 대한 자세한 내용은 SQL Database 프로젝트 확장을 참조하세요.

  • 메시지: NoTablesFound: Some of the source tables don't exist in the target database. Missing tables: <TableList>.

  • 원인: 마이그레이션을 위해 선택한 테이블이 대상 Azure SQL Database에 없습니다.

  • 권장 사항: 선택한 테이블이 대상 Azure SQL Database에 있는지 확인합니다. 이 마이그레이션이 PowerShell 스크립트에서 호출되는 경우 테이블 목록 매개 변수에 올바른 테이블 이름이 포함되어 있고 마이그레이션에 전달되는지 확인합니다.

  • 메시지: SqlVersionOutOfRange: Source instance version is lower than 2008, which is not supported to migrate. Source instance: <InstanceName>.

  • 원인: Azure Database Migration Service는 2008보다 낮은 SQL Server 인스턴스에서의 마이그레이션을 지원하지 않습니다.

  • 권장 사항: 원본 SQL Server 인스턴스를 최신 버전의 SQL Server로 업그레이드합니다. 자세한 내용은 SQL Server 업그레이드를 참조하세요.

  • 메시지: TableMappingMismatch: Some of the source tables don't exist in the target database. Missing tables: <TableList>.

  • 원인: 마이그레이션을 위해 선택한 테이블이 대상 Azure SQL Database에 없습니다.

  • 권장 사항: 선택한 테이블이 대상 Azure SQL Database에 있는지 확인합니다. 이 마이그레이션이 PowerShell 스크립트에서 호출되는 경우 테이블 목록 매개 변수에 올바른 테이블 이름이 포함되어 있고 마이그레이션에 전달되는지 확인합니다.

오류 코드: 2060 - SqlSchemaCopyFailed

  • 메시지: The SELECT permission was denied on the object 'sql_logins', database 'master', schema 'sys'.

  • 원인: 고객이 Azure SQL Database를 연결하는 데 사용하는 계정에 sys.sql_logins 테이블에 액세스할 수 있는 권한이 없습니다.

  • 권장 사항: 문제를 완화하는 방법에는 두 가지가 있습니다.

    1. 관리자 권한을 부여하는 'sysadmin' 역할을 계정에 추가합니다.

    2. 고객이 sysadmin 계정을 사용할 수 없거나 계정에 sysadmin 권한을 부여할 수 없는 경우 원본 SQL Server에 필요한 최소 권한은 "db_owner"이며, 대상 Azure SQL DB에서 마스터에 사용자를 만들고 ##MS_DatabaseManager##,##MS_DatabaseConnector##, ##MS_DefinitionReader####MS_LoginManager## 고정 서버 역할을 사용자에게 부여합니다. 예를 들면 다음과 같습니다.

      -- Run the script in the master
      -- Please run the script on Master database
      CREATE LOGIN testuser with Password = '*********';
      ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [testuser]; 
       GO
      ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [testuser]; 
       GO
      ALTER SERVER ROLE ##MS_DatabaseManager## ADD MEMBER [testuser]; 
       GO
      ALTER SERVER ROLE ##MS_LoginManager## ADD MEMBER [testuser]; 
       GO
      CREATE USER testuser from login testuser;
      EXEC sp_addRoleMember 'dbmanager', 'testuser';
      EXEC sp_addRoleMember 'loginmanager', 'testuser';
      
  • 메시지: Failed to get service token from ADF service.

  • 원인: 고객의 SHIR이 데이터 팩터리를 연결하지 못했습니다.

  • 권장 사항: 해결 방법에 대한 샘플 문서입니다. 통합 런타임이 Data Factory에 연결할 수 없습니다.

  • 메시지: IR Nodes are offline.

  • 원인: 마이그레이션 중에 네트워크가 중단되어 IR 노드가 오프라인이 되는 것이 원인일 수 있습니다. SHIR이 설치된 컴퓨터가 켜져 있는지 확인합니다.

  • 권장 사항: SHIR이 설치된 컴퓨터가 켜져 있는지 확인합니다.

  • 메시지: Deployed failure: {0}. Object element: {1}.

  • 원인: 고객이 접할 수 있는 가장 일반적인 오류입니다. 이는 개체가 대상에서 지원되지 않기 때문에 개체를 대상에 배포할 수 없음을 의미합니다.

  • 권장 사항: 고객은 평가 결과를 확인해야 합니다(평가 규칙). 다음은 스키마 마이그레이션에 실패할 수 있는 평가 문제 목록입니다.

    BULK INSERT

    Compute 절

    암호화 공급자

    데이터베이스 간 참조

    데이터베이스 보안 주체 별칭

    DISABLE_DEF_CNST_CHK 옵션

    FASTFIRSTROW 힌트

    FILESTREAM

    MS DTC

    OPENROWSET(BULK)

    OPENROWSET(공급자)

    참고 항목

    오류 세부 정보를 보려면 Microsoft 통합 런타임 Configuration Manager를 열고 진단 > 로깅 > 로그 보기로 이동합니다. 이벤트 뷰어에서 애플리케이션 및 서비스 로그 > 커넥터 - 통합 런타임으로 이동하여 오류를 필터링합니다.

  • 메시지: Deployed failure: Index cannot be created on computed column '{0}' of table '{1}' because the underlying object '{2}' has a different owner. Object element: {3}.

    샘플 생성 스크립트: IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Sales].[Customer]') AND name = N'AK_Customer_AccountNumber') CREATE UNIQUE NONCLUSTERED INDEX [AK_Customer_AccountNumber] ON [Sales].[Customer] ( [AccountNumber] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

  • 원인: 계산 열에서 모든 함수 참조의 소유자는 테이블 소유자와 같아야 합니다.

  • 권장 사항: 소유권 요구 사항을 참조하세요.

오류 코드: Ext_RestoreSettingsError

  • 메시지: Unable to read blobs in storage container, exception: The remote server returned an error: (403) Forbidden.; The remote server returned an error: (403) Forbidden

  • 원인: Azure SQL 대상이 Blob Storage에 연결할 수 없습니다.

  • 권장 사항: 대상 네트워크 설정이 Blob Storage에 대한 액세스를 허용하는지 확인합니다. 예를 들어, Azure VM 대상의 SQL Server로 마이그레이션하는 경우 가상 머신의 아웃바운드 연결이 차단되지 않는지 확인합니다.

  • 메시지: Failed to create restore job. Unable to read blobs in storage container, exception: The remote name could not be resolved.

  • 원인: Azure SQL 대상이 Blob Storage에 연결할 수 없습니다.

  • 권장 사항: 대상 네트워크 설정이 Blob Storage에 대한 액세스를 허용하는지 확인합니다. 예를 들어, SQL VM으로 마이그레이션하는 경우 VM의 아웃바운드 연결이 차단되지 않았는지 확인합니다.

  • 메시지: Migration for Database <Database Name> failed with error 'Migration cannot be completed because provided backup file name <Backup File Name> should be the last restore backup file <Last Restore Backup File Name>'.

  • 원인: 가장 최근의 백업이 백업 설정에 지정되지 않았습니다.

  • 권장 사항: 백업 설정에서 가장 최근 백업 파일 이름을 지정하고 작업을 다시 시도합니다.

  • 메시지: Operation failed: errorCode: Ext_RestoreSettingsError, message: RestoreId: 1111111-aaaa-bbbb-cccc-dddddddd, OperationId: 2222222-aaaa-bbbb-cccc-dddddddd, Detail: Unable to read blobs in storage container, exception: Unable to connect to the remote server;Unable to connect to the remote server;A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 11.111.11.111:443.

  • 원인: 공용 네트워크 및 프라이빗 엔드포인트 구성이 있는 스토리지 계정 모두에서 오류가 발생할 수 있습니다. 하이브리드 네트워크 라우팅 및 DHCP를 제어하는 온-프레미스 DNS 서버가 있을 수도 있습니다. DNS 서버에 구성된 Azure IP 주소를 허용하지 않는 한 Azure VM 대상의 SQL Server는 원격 스토리지 Blob 엔드포인트를 확인할 기회가 없습니다.

  • 권장 사항: 이 문제를 디버깅하려면 Azure VM 대상의 SQL Server에서 Azure Blob Storage URL을 ping하고 연결 문제가 있는지 확인할 수 있습니다. 이 문제를 해결하려면 DNS 서버에 구성된 Azure IP 주소를 허용해야 합니다. 자세한 내용은 Azure 프라이빗 엔드포인트 연결 문제 해결을 참조하세요.

Azure Database Migration Service 명명 규칙

DMS 서비스가 "오류: 서비스 이름 'x_y_z'이(가) 잘못되었습니다."로 실패한 경우 Azure Database Migration Service 명명 규칙을 따라야 합니다. Azure Database Migration Service는 컴퓨팅에 Azure Data Factory를 사용하므로 여기에 멘션 것과 정확히 동일한 명명 규칙을 따릅니다.

Azure SQL Database 제한 사항

Azure Data Studio용 Azure SQL 확장을 사용하여 Azure SQL Database로 마이그레이션하는 데는 다음과 같은 제한 사항이 있습니다.

Azure SQL Database 오프라인 마이그레이션은 데이터 이동을 위해 ADF(Azure Data Factory) 파이프라인을 활용하므로 ADF 제한 사항을 준수합니다. 해당 ADF가 생성되고 데이터베이스 마이그레이션 서비스도 생성됩니다. 따라서 팩터리 한도는 서비스당 적용됩니다.

  • SHIR이 설치된 컴퓨터는 마이그레이션을 위한 컴퓨팅 역할을 합니다. 이 컴퓨터가 데이터 복사의 CPU 및 메모리 로드를 처리할 수 있는지 확인합니다. 자세히 알아보려면 SHIR 권장 사항을 검토합니다.
  • 데이터베이스 한도당 100,000개 테이블
  • 서비스당 동시 데이터베이스 마이그레이션 10,000회
  • 마이그레이션 속도는 대상 Azure SQL Database SKU 및 자체 호스팅 통합 런타임에 따라 크게 달라집니다.
  • Azure SQL Database 마이그레이션은 시작 작업의 ADF 오버헤드로 인해 테이블 수에 따른 확장 성능이 낮습니다. 데이터베이스에 수천 개의 테이블이 있는 경우 각 테이블이 1비트 데이터가 있는 하나의 행으로 구성되어 있어도 각 테이블의 시작 프로세스는 몇 초가 걸릴 수 있습니다.
  • 현재 더블바이트 문자가 있는 Azure SQL Database 테이블 이름은 마이그레이션에 지원되지 않습니다. 완화 방법은 마이그레이션 전에 테이블 이름을 바꾸는 것입니다. 마이그레이션에 성공한 후 원래 이름으로 다시 변경할 수 있습니다.
  • 대규모 Blob 열이 있는 테이블은 시간 초과로 인해 마이그레이션하지 못할 수 있습니다.
  • SQL Server가 예약된 데이터베이스 이름은 현재 지원되지 않습니다.
  • 세미콜론이 포함된 데이터베이스 이름은 현재 지원되지 않습니다.
  • 컴퓨팅 열은 마이그레이션되지 않습니다.

Azure SQL Managed Instance 제한 사항

Azure Data Studio용 Azure SQL 확장을 사용하여 Azure SQL Managed Instance로 마이그레이션하는 데는 다음과 같은 제한 사항이 있습니다.

  • 단일 데이터베이스를 마이그레이션하는 경우 데이터베이스 백업은 데이터베이스 폴더(컨테이너 루트 폴더 포함) 내의 플랫 파일 구조에 배치되어야 하며 폴더는 지원되지 않으므로 중첩될 수 없습니다.
  • 동일한 Azure Blob Storage 컨테이너를 사용하여 여러 데이터베이스를 마이그레이션하는 경우 다른 데이터베이스에 대한 백업 파일을 컨테이너 내의 별도 폴더에 배치해야 합니다.
  • 대상 Azure SQL Managed Instance에서 DMS를 사용하여 기존 데이터베이스를 덮어쓰는 것은 지원되지 않습니다.
  • DMS는 원본 토폴로지와 일치하도록 대상에서 고가용성 및 재해 복구를 구성하는 것을 지원하지 않습니다.
  • 다음 서버 개체는 지원되지 않습니다.
    • SQL Server 에이전트 작업
    • 자격 증명
    • SSIS 패키지
    • 서버 감사
  • DMS를 사용한 데이터베이스 마이그레이션을 위해 Azure Data Factory에서 만든 기존 자체 호스팅 통합 런타임을 사용할 수 없습니다. 처음에 자체 호스팅 통합 런타임은 Azure Data Studio에서 Azure SQL 마이그레이션 확장을 사용하여 만들어야 하며 추가 데이터베이스 마이그레이션에 재사용할 수 있습니다.
  • DMS에서 만들어진 단일 LRS 작업은 최대 30일 동안 실행할 수 있습니다. 이 기간이 만료되면 작업이 자동으로 취소되므로 대상 데이터베이스가 자동으로 삭제됩니다.
  • Memory-optimized filegroup must be empty in order to be restored on General Purpose tier of SQL Database Managed Instance 오류가 표시될 수 있습니다. 이 문제는 설계상 발생하며 Hekaton(SQL Server 메모리 내 OLTP라고도 함)은 Azure SQL Managed Instance의 범용 계층에서 지원되지 않습니다. 마이그레이션을 계속하는 한 가지 방법은 Hekaton을 지원하는 중요 비즈니스용 계층으로 업그레이드하는 것입니다. 또 다른 방법은 Azure SQL Managed Instance가 범용인 동안 원본 데이터베이스가 이를 사용하지 않도록 하는 것입니다.

Azure VM의 SQL Server 제한 사항

Azure Data Studio용 Azure SQL 확장을 사용하여 Azure VM의 SQL Server로 마이그레이션하는 데는 다음과 같은 제한 사항이 있습니다.

  • 단일 데이터베이스를 마이그레이션하는 경우 데이터베이스 백업은 데이터베이스 폴더(컨테이너 루트 폴더 포함) 내의 플랫 파일 구조에 배치되어야 하며 폴더는 지원되지 않으므로 중첩될 수 없습니다.
  • 동일한 Azure Blob Storage 컨테이너를 사용하여 여러 데이터베이스를 마이그레이션하는 경우 다른 데이터베이스에 대한 백업 파일을 컨테이너 내의 별도 폴더에 배치해야 합니다.
  • 대상 Azure 가상 머신의 SQL Server에서 DMS를 사용하여 기존 데이터베이스를 덮어쓰는 것은 지원되지 않습니다.
  • 원본 토폴로지와 일치하도록 대상에서 고가용성 및 재해 복구를 구성하는 것은 DMS에서 지원되지 않습니다.
  • 다음 서버 개체는 지원되지 않습니다.
    • SQL Server 에이전트 작업
    • 자격 증명
    • SSIS 패키지
    • 서버 감사
  • DMS를 사용한 데이터베이스 마이그레이션을 위해 Azure Data Factory에서 만든 기존 자체 호스팅 통합 런타임을 사용할 수 없습니다. 처음에 자체 호스팅 통합 런타임은 Azure Data Studio에서 Azure SQL 마이그레이션 확장을 사용하여 만들어야 하며 추가 데이터베이스 마이그레이션에 재사용할 수 있습니다.
  • Azure Virtual Machines의 SQL Server로 마이그레이션하는 경우 SQL Server 2008 이하가 있는 VM은 대상 버전으로 지원되지 않습니다.
  • SQL Server 2012 또는 SQL Server 2014가 있는 VM을 사용하는 경우 네트워크 공유 옵션을 사용하는 대신 Azure Storage Blob 컨테이너에 원본 데이터베이스 백업 파일을 저장해야 합니다. 블록 Blob은 SQL 2016 이상에서만 지원되므로 백업 파일은 페이지 Blob으로 저장합니다.
  • 대상 Azure 가상 머신의 SQL IaaS 에이전트 확장이 경량 모드가 아닌 전체 모드인지 확인해야 합니다.
  • SQL IaaS 에이전트 확장은 기본 서버 인스턴스 또는 단일 명명된 인스턴스의 관리만 지원합니다.
  • SQL Server Azure Virtual Machine으로 마이그레이션할 수 있는 데이터베이스 수는 하드웨어 사양 및 워크로드에 따라 달라지지만 적용된 제한은 없습니다. 그러나 각 데이터베이스에 대한 모든 마이그레이션 작업(마이그레이션 시작, 중단)은 순차적으로 몇 분 정도 소요됩니다. 예를 들어 100개의 데이터베이스를 마이그레이션하려면 마이그레이션 큐를 만드는 데 약 200분(2 x 100), 100개 데이터베이스(백업 및 복원 시간 제외)를 모두 잘라내는 데 약 100분(1 x 100)이 걸릴 수 있습니다. 따라서 데이터베이스 수가 증가함에 따라 마이그레이션 속도가 느려집니다. Microsoft는 엄격한 마이그레이션 테스트에 따라 더 긴 마이그레이션 기간을 미리 예약하거나 SQL Server Azure VM으로 마이그레이션할 때 많은 수의 데이터베이스를 일괄 처리로 분할하는 것을 권장합니다.
  • VM이 백업 파일에 액세스할 수 있도록 Azure Storage 계정의 네트워킹/방화벽을 구성하는 것 외에도 스토리지 계정에 대한 아웃바운드 연결을 허용하도록 Azure VM의 SQL Server에 대한 네트워킹/방화벽을 구성해야 합니다.
  • SQL 마이그레이션이 진행되는 동안 대상 Azure VM의 SQL Server 전원을 켠 상태로 유지해야 합니다. 또한 새 마이그레이션을 만들 때 마이그레이션을 장애 조치(failover)하거나 취소합니다.
  • 오류: Login failed for user 'NT Service\SQLIaaSExtensionQuery. 이유: SQL Server 인스턴스가 단일 사용자 모드입니다. 한 가지 가능한 이유는 대상 Azure VM의 SQL Server가 업그레이드 모드에 있기 때문입니다. 솔루션: 대상 Azure VM의 SQL Server가 업그레이드 모드를 종료하고 마이그레이션을 다시 시작할 때까지 기다리세요.
  • 오류: Ext_RestoreSettingsError, message: Failed to create restore job.;Cannot create file 'F:\data\XXX.mdf' because it already exists. 솔루션: 대상 Azure VM의 SQL Server에 연결하고 XXX.mdf 파일을 삭제합니다. 그런 다음, 마이그레이션을 다시 시작합니다.

Azure Data Studio 제한 사항

SQL 마이그레이션 서비스 시작 실패: 오류: 요청 오류:

  • 메시지: Error at ClientRequest.<anonymous> (c:\Users\MyUser\.azuredatastudio\extensions\microsoft.sql-migration-1.4.2\dist\main.js:2:7448) at ClientRequest.emit (node:events:538:35) at TLSSocket.socketOnEnd (node:_http_client:466:9) at TLSSocket.emit (node:events:538:35) at endReadableNT (node:internal/streams/readable:1345:12) at process.processTicksAndRejections (node:internal/process/task_queues:83:21)

  • 원인: 이 문제는 Azure Data Studio가 https://github.com/microsoft/sqltoolsservice/releases에서 MigrationService 패키지를 다운로드할 수 없을 때 발생합니다. 다운로드 실패는 네트워크 작업 연결이 끊겼거나 프록시 설정이 확인되지 않았기 때문에 발생할 수 있습니다.

  • 권장 사항: 이 문제를 해결하는 확실한 방법은 패키지를 수동으로 다운로드하는 것입니다. 다음 링크에 설명된 완화 단계를 따릅니다. https://github.com/microsoft/azuredatastudio/issues/22558#issuecomment-1496307891