既知の問題、制限事項、トラブルシューティング

この記事では、Azure Data Studio の Azure SQL Migration 拡張機能に関連する既知の問題とトラブルシューティングを一覧で示します。

重要

最新バージョンの 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.

  • 原因: データを移行する前に、Transparent Data Encryption (TDE) で保護されているデータベースのソース SQL Server インスタンス証明書を、ターゲットの Azure SQL Managed Instance または Azure 仮想マシン上の SQL Server に移行する必要があります。

  • 推奨事項: TDE 証明書をターゲット インスタンスに移行し、プロセスを再試行します。 TDE 対応データベースの移行の詳細については、「チュートリアル: Azure Data Studio で TDE 対応データベース (プレビュー) を 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 が報告される」に記載されている現象の 1 つが原因である可能性があります。

  • 推奨事項: トラブルシューティングの手順については、「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.'.

  • 原因: データベース バックアップに含まれていない論理ファイル名を指定しました。 このエラーのもう 1 つの考えられる原因は、ストレージ アカウントコンテナー名が正しくない場合です。

  • 推奨事項: 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 の詳細については、「ログ再生サービスを使用して 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;
    

    Note

    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) の問題があります。 この問題を解決するには、ネットワーク チームに問い合わせてください。 詳細については、「セルフホステッド統合ランタイムのトラブルシューティング」をご覧ください。

  • メッセージ: 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>.

  • 原因: キャンセル要求を受信し、データ コピーが正常に完了しましたが、ターゲット データベース スキーマが元の状態に戻されていません。

  • 推奨事項: 必要に応じて、最初のクエリと返されたすべてのクエリを実行し、その後 2 番目のクエリを実行して同じことを行うことで、ターゲット データベースを元の状態に戻すことができます。

    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 を使用してオプトアウトするオプションを使用できます。

    Note

    詳細については、「ローカル 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 データベースで別の照合順序が使用されている場合は、照合順序が一致する別のターゲット データベースを再作成または選択する必要があります。 詳細については、「照合順序と Unicode 照合順序」をご覧ください

  • メッセージ: 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. 照合順序を手動で変更するには、この記事に従ってください。 詳細については、「照合順序と Unicode 照合順序」をご覧ください
  • メッセージ: 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 テーブルにアクセスするアクセス許可がありません。

  • 推奨事項: この問題を軽減するには、次の 2 つの方法があります。

    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 (一括)

    OPENROWSET (プロバイダー)

    Note

    エラーの詳細を表示するには、Microsoft Integration Runtime 構成マネージャーを開き、[診断] > [ログ] > [ログの表示] に移動します。 イベント ビューアーで [アプリケーションとサービス ログ] > [コネクタ - 統合ランタイム] に移動し、フィルター処理でエラーを表示します。

  • メッセージ: 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 ストレージに接続できません。

  • 推奨事項: ターゲット ネットワーク設定で BLOB ストレージへのアクセスが許可されていることを確認します。 たとえば、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 ストレージに接続できません。

  • 推奨事項: ターゲット ネットワーク設定で BLOB ストレージへのアクセスが許可されていることを確認します。 たとえば、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 データベースの制限事項

Azure Data Studio 用の Azure SQL 拡張機能を使用して Azure SQL Database に移行する場合、次の制限があります。

Azure SQL Database オフライン移行では、データ移動に Azure Data Factory (ADF) パイプラインが利用されるため、ADF の制限に従います。 データベース移行サービスも作成されると、対応する ADF が作成されます。 したがって、ファクトリの制限はサービスごとに適用されます。

  • SHIR がインストールされているマシンは、移行用のコンピューティングとして機能します。 このマシンがデータ コピーの CPU とメモリの負荷を処理できることを確認します。 詳細については、SHIR の推奨事項に関するページを参照してください。
  • データベースあたり 100,000 テーブルの制限。
  • サービスごとに 10,000 個の同時データベース移行。
  • 移行速度は、ターゲット Azure SQL Database SKU とセルフホステッド統合ランタイム ホストによって大きく異なります。
  • Azure SQL データベースの移行では、アクティビティの開始時に ADF のオーバーヘッドが発生するため、テーブル番号のスケーリングが不十分です。 データベースに何千ものテーブルがある場合、1 行 1 ビットのデータで構成されている場合でも、各テーブルの起動プロセスに数秒を要する可能性があります。
  • 現在、2 バイト文字の Azure SQL データベース テーブル名は移行でサポートされていません。 軽減策は、移行前にテーブルの名前を変更することです。移行が成功した後は、元の名前に戻すことができます。
  • BLOB 列が大きいテーブルは、タイムアウトにより移行に失敗する場合があります。
  • SQL Server で予約されたデータベース名は現在サポートされていません。
  • セミコロンを含むデータベース名は現在サポートされていません。
  • 計算列は移行されません。

Azure SQL Managed Instance の制限事項

Azure Data Studio 用の Azure SQL 拡張機能を使用して Azure SQL Managed Instance に移行する場合、次の制限があります。

  • 1 つのデータベースを移行する場合、データベース バックアップは (コンテナーのルート フォルダーを含め) データベース フォルダー内のフラット ファイル構造に配置する必要があります。また、サポートされていないため、フォルダーを入れ子にすることはできません。
  • 同じ Azure Blob Storage コンテナーを使用して複数のデータベースを移行する場合は、異なるデータベースのバックアップ ファイルをコンテナー内の別々のフォルダーに配置する必要があります。
  • ターゲットの Azure SQL Managed Instance で DMS を使用して既存のデータベースを上書きする操作はサポートされていません。
  • DMS では、ソース トポロジに合わせてターゲットで高可用性とディザスター リカバリーを構成することはサポートされていません。
  • 次のサーバー オブジェクトはサポートされていません。
    • SQL Server エージェント ジョブ
    • 資格情報
    • SSIS パッケージ
    • サーバー監査
  • DMS を使用したデータベースの移行には、Azure Data Factory から作成された既存のセルフホステッド統合ランタイムを使用することはできません。 最初は、Azure Data Studio の Azure SQL 移行拡張機能を使用してセルフホステッド統合ランタイムを作成する必要があります。これを今後のデータベース移行に再利用できます。
  • (DMS によって作成された) 1 つの 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 の General Purpose レベルではサポートされていません。 移行を続けるための 1 つの方法は、Hekaton をサポートする Business Critical レベルにアップグレードすることです。 もう 1 つの方法は、Azure SQL Managed Instance が General Purpose である間は、ソース データベースでそれを使わないようにすることです。

Azure VM での SQL Server の制限事項

Azure Data Studio 用の Azure SQL 拡張機能を使用して Azure VM 上の SQL Server に移行する場合、次の制限があります。

  • 1 つのデータベースを移行する場合、データベース バックアップは (コンテナーのルート フォルダーを含め) データベース フォルダー内のフラット ファイル構造に配置する必要があります。また、サポートされていないため、フォルダーを入れ子にすることはできません。
  • 同じ 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 Agent 拡張機能が、軽量モードではなくフル モードであることを確認する必要があります。
  • SQL IaaS Agent 拡張機能では、既定のサーバー インスタンスまたは単一の名前付きインスタンスの管理のみがサポートされます。
  • 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 を電源オンのままにしておく必要があります。 また、新しい移行を作成する場合は、フェールオーバーするか、移行をキャンセルします。
  • エラー: Login failed for user 'NT Service\SQLIaaSExtensionQuery. 理由: SQL Server インスタンスはシングル ユーザー モードです。 考えられる理由の 1 つは、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 Migration Service の起動に失敗しました: エラー: 要求エラー:

  • メッセージ: 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 のリンクに記載されている軽減策の手順に従います。