SQL 用 Azure Synapse Link に関する制限事項と既知の問題

この記事では、SQL 用 Azure Synapse Link に関する制限事項既知の問題について説明します。

制限事項

SQL 用 Azure Synapse Link に関する制限事項のリストを次のセクションに示します。

Azure SQL Database と SQL Server 2022

  • ソース テーブルには主キーが必要です。
  • 書き込み可能なプライマリ レプリカのみが、Azure Synapse Link for SQL のデータ ソースとしてサポートされます。
  • 次のデータ型は、ソース テーブルの主キーとしてサポートされていません。
    • 実質
    • float
    • hierarchyid
    • sql_variant
    • timestamp
  • ソース テーブルの行サイズは 7,500 バイト以下にする必要があります。 可変長列が行外に格納されているテーブルの場合、24 バイトのポインターがメイン レコードに格納されます。
  • ソース テーブルのスナップショットを初めて作成する場合、サイズが 1 MB を超えるラージ オブジェクト (LOB) データを含むソース テーブルのデータはサポートされません。 これらの LOB データ型には、varchar(max)、nvarchar(max)、varbinary(max) が含まれます。 エラーがスローされ、データは Azure Synapse Analytics にエクスポートされません。
  • SQL 用 Azure Synapse Link に対して有効なテーブルの列数は最大 1,020 です (1,024 ではありません)。
  • 1 つのデータベースで複数のリンクを有効にすることはできますが、1 つのテーブルが複数のリンクに属することはできません。
  • データベース所有者がマップ済みログインを持っていない場合、SQL 用 Azure Synapse Link でリンク接続を有効にするとエラーが発生します。 ユーザーは、ALTER AUTHORIZATION コマンドでデータベース所有者を有効なユーザーに設定することで、この問題を解決することができます。
  • ソース テーブルに Azure Synapse Analytics 専用 SQL プールでサポートされていないデータ型を持つ計算列または列が含まれている場合、これらの列は Azure Synapse Analytics にレプリケートされません。 サポートされていない列は次のとおりです。
    • image
    • テキスト
    • xml
    • timestamp
    • sql_variant
    • UDT
    • geometry
    • geography
  • 単一リンク接続に最大 5,000 個のテーブルを追加することができます。
  • 次のテーブルの DDL 操作は、SQL 用 Azure Synapse Link に対して有効になっているとき、ソース テーブルでは許可されません。 他のすべての DDL 操作は許可されますが、それらは Azure Synapse Analytics にはレプリケートされません。
    • パーティションの切り替え
    • 列の追加/削除/変更
    • 主キーの変更
    • テーブルの削除/切り捨て
    • テーブルの名前変更
  • DDL + DML が明示的なトランザクション (BEGIN TRANSACTION および END TRANSACTION ステートメント間) で実行される場合、対応するテーブルのレプリケーションはリンク接続で失敗します。

    注意

    リンク接続レベルでのトランザクションの一貫性に重要なテーブルがある場合は、[監視] タブで Azure Synapse Link テーブルの状態を確認してください。

  • ソース テーブルで次のいずれかの機能が使用されている場合は、SQL 用 Azure Synapse Link を有効にすることはできません。
    • 変更データ キャプチャ
    • テンポラル履歴テーブル
    • Always Encrypted
    • インメモリ OLTP
    • 列のストア インデックス
    • グラフ
  • システム テーブルはレプリケートされません。
  • ソース データベースのセキュリティ構成は、ターゲットの専用 SQL プールには反映されません
  • SQL 用 Azure Synapse Link を有効にすると、changefeed という名前の新しいスキーマが作成されます。 このスキーマは、システムで使用するために予約されているため、使用しないでください。
  • UTF8 や特定の日本語照合順序など、専用 SQL プールでサポートされていない照合順序を使用するソース テーブルはレプリケートできません。 Synapse SQL プールでサポートされている照合順序をご覧ください。
    • さらに、一部のタイ語照合順序は、現在、Azure Synapse Link for SQL でサポートされていません。 これらのサポートされていない照合順序は次のとおりです。
      • Thai100CaseInsensitiveAccentInsensitiveKanaSensitive
      • Thai100CaseInsensitiveAccentSensitiveSupplementaryCharacters
      • Thai100CaseSensitiveAccentInsensitiveKanaSensitive
      • Thai100CaseSensitiveAccentInsensitiveKanaSensitiveWidthSensitiveSupplementaryCharacters
      • Thai100CaseSensitiveAccentSensitiveKanaSensitive
      • Thai100CaseSensitiveAccentSensitiveSupplementaryCharacters
      • ThaiCaseSensitiveAccentInsensitiveWidthSensitive
    • 現在、照合順序 Latin1_General_BIN2 はサポートされていません。リンクを停止できず、基になるテーブルをレプリケーションから削除もできなかったという既知の問題があるためです。
  • > 370 MB の単一行更新 (オフページ ストレージを含む) はサポートされていません。
  • Azure SQL Database または SQL Server 2022 で Azure Synapse Link for SQL を有効にすると、高速データベース復旧 (ADR) のログの積極的切り捨て機能が自動的に無効になります。 これは、Azure Synapse Link for SQL がデータベース トランザクション ログにアクセスするためです。 この動作は、変更データ キャプチャ (CDC) に似ています。 アクティブなトランザクションは、トランザクションがコミットされ、Azure Synapse Link for SQL が追いつくか、トランザクションが中止されるまで、トランザクション ログの切り捨てを保留し続けます。 これにより、トランザクション ログが通常よりも多くなる可能性があるため、トランザクション ログが満杯にならないようにモニターする必要があります。

Azure SQL Database のみ

  • SQL 用 Azure Synapse Link は、DTU が 100 未満の Free、Basic、Standard の各レベルではサポートされていません。
  • SQL 用 Azure Synapse Link は、SQL Managed Instance ではサポートされていません。
  • ソース Azure SQL DB に対する認証には、サービス プリンシパルがサポートされていないため、Azure SQL DB のリンク サービスを作成する際には、SQL 認証、ユーザー割り当てマネージド ID (UAMI)、またはサービス割り当てマネージド ID (SAMI) を選択するようにしてください。
  • Azure SQL Database 論理サーバーに SAMI と UAMI の両方が構成されている場合、Azure Synapse Link は SAMI を使用します。
  • セカンダリ データベースの名前がプライマリ データベースと異なる場合、GeoDR フェールオーバーが発生するとセカンダリ データベースで Azure Synapse Link を有効にできないことがあります。
  • Microsoft Entra ユーザーとして、データベースで Azure Synapse Link for SQL を有効にした場合、ポイントインタイム リストア (PITR) は失敗します。 PITR は、SQL ユーザーとしてデータベース上で SQL 用 Azure Synapse Link を有効にしたときにのみ機能します。
  • Microsoft Entra ユーザーとしてデータベースを作成し、SQL 用 Azure Synapse Link を有効にした場合、SQL 認証ユーザー (sysadmin ロールなど) は、SQL 用 Azure Synapse Link 成果物を無効にしたり変更したりすることができません。 ただし、別の Microsoft Entra ユーザーは、同じデータベースで SQL 用 Azure Synapse Link を有効または無効にできます。 同様に、SQL 認証ユーザーとしてデータベースを作成した場合、Microsoft Entra ユーザーとして SQL 用 Azure Synapse Link を有効または無効にすることはできません。
  • Azure SQL Database と Azure Synapse ワークスペースが別々のテナントにある場合、テナント間データ レプリケーションはサポートされていません。

SQL Server 2022 のみ

  • トランザクション レプリケーション パブリッシャーまたはディストリビューターであるデータベースで、SQL 用 Azure Synapse Link を有効にすることはできません。
  • 可用性グループに非同期レプリカがある場合、トランザクションが Azure Synapse Link for SQL にパブリッシュされる前に、それらがすべてのレプリカに書き込まれる必要があります。
  • SQL 用 Azure Synapse Link は、データベース ミラーリングが有効になっているデータベースではサポートされません。
  • SQL 用 Azure Synapse Link 対応データベースをオンプレミスから Azure SQL Managed Instance に復元することはサポートされていません。

注意事項

Azure Synapse Link for SQL は、Azure SQL Managed Instance Link も使用しているデータベースではサポートされていません。 これらのシナリオでは、マネージド インスタンスが読み取り/書き込みモードに移行すると、トランザクション ログが満杯になる問題が発生する可能性があるので注意してください。

既知の問題

  • 適用対象 - Azure Synapse Link for Azure SQL Database および SQL Server 2022
  • 問題 - Azure Synapse Analytics ワークスペースを削除したときに、実行中のリンクが停止しない可能性があります。これにより、ソース データベースによってリンクがまだ動作していると認識され、トランザクション ログが切り捨てられなくなり、満杯になる可能性があります。
  • 解決策 - この状況には、次の 2 つの解決策が考えられます。
  1. Azure Synapse Analytics ワークスペースを削除する前に、実行中のリンクをすべて停止します。
  2. ソース データベース内のリンク定義を手動でクリーンアップします。
    1. 次のクエリを使用して、停止する必要がある table_group_id を検索します。
      SELECT table_group_id, workspace_id, synapse_workgroup_name
      FROM [changefeed].[change_feed_table_groups]
      WHERE synapse_workgroup_name = <synapse workspace name>
      
    2. 次の手順で、特定した各リンクを削除します。
      EXEC sys.sp_change_feed_drop_table_group @table_group_id = <table_group_id>
      
    3. 必要に応じて、特定のデータベースのすべてのテーブル グループを無効にする場合は、次のコマンドを使用してデータベースの変更フィードを無効にすることもできます。
      EXEC sys.sp_change_feed_disable_db
      

最近無効にされた テーブルの変更フィードを再度有効にしようとすると、エラーが表示されます。 これは、一般的ではない動作です。

  • 適用対象 - Azure Synapse Link for Azure SQL Database および SQL Server 2022
  • 問題 - 最近無効にされ、メタデータがまだクリーンアップされていなくて、状態に [無効] のマークが付けられているテーブルを有効にしようとすると、A table can only be enabled once among all table groups というエラーがスローされます。
  • 解決策 - 無効になっているテーブル システム プロシージャが完了するまでしばらく待ってから、テーブルの再有効化を試してください。
  • 適用対象 - Azure Synapse Link for Azure SQL Database および SQL Server 2022
  • 問題 - Azure Synapse Link で有効になっている SQL データベースの場合、SSDT のインポート/エクスポートおよび抽出/デプロイ操作を使用して新しいデータベースをインポート/セットアップすると、changefeed スキーマとユーザーが新しいデータベースで除外されません。 ただし、変更フィードのテーブルは、sys.objectsis_ms_shipped=1 としてマークされており、それらのオブジェクトは SSDT のインポート/エクスポートおよび抽出/デプロイ操作に含まれないため、DaxFX では無視 "されます"。 インポート/デプロイされたデータベースで Azure Synapse Link を有効にするときに、changefeed ユーザーとスキーマが既に存在する場合、システム ストアド プロシージャ sys.sp_change_feed_enable_db が失敗します。 この問題は、Azure Synapse Link 変更フィード機能に関連しない、changefeed という名前のユーザーまたはスキーマが作成されている場合に発生します。
  • 解決策 -
    • 空の changefeed スキーマと changefeed ユーザーを手動で削除します。 これで、インポート/デプロイされたデータベースで Azure Synapse Link を正常に有効にできます。
    • Azure Synapse Link に関連しない、changefeed という名前のカスタム スキーマまたはユーザーがデータベースで定義されていて、Azure Synapse Link for SQL を使用する予定がない場合は、changefeed スキーマまたはユーザーを削除する必要はありません。
    • データベースに changefeed という名前のカスタマー スキーマまたはユーザーが定義されている場合、現時点では、このデータベースは Azure Synapse Link for SQL に参加できません。

次の手順