次の方法で共有


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

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

制限事項

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

Azure SQL Database と SQL Server 2022

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

    Note

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

  • ソース テーブルで次のいずれかの機能が使用されている場合は、Azure Synapse Link for SQL を有効にすることはできません。
    • 変更データ キャプチャ
    • テンポラル履歴テーブル
    • Always Encrypted
    • インメモリ テーブル
    • 列ストア インデックス
    • グラフ
  • システム テーブルはレプリケートされません。
  • ソース データベースのセキュリティ構成は、ターゲットの専用 SQL プールには反映されません
  • SQL 用 Azure Synapse Link を有効にすると、changefeed という名前の新しいスキーマが作成されます。 このスキーマは、システムで使用するために予約されているため、使用しないでください。
  • UTF-8 や特定の日本語照合順序など、専用 SQL プールでサポートされていない照合順序を使用するソース テーブルはレプリケートできません。 Synapse SQL プールでサポートされている照合順序の情報を参照してください。
    • さらに、Azure Synapse Link for SQL では、一部のタイ語の照合順序はサポートされていません。
      • Thai100CaseInsensitiveAccentInsensitiveKanaSensitive
      • Thai100CaseInsensitiveAccentSensitiveSupplementaryCharacters
      • Thai100CaseSensitiveAccentInsensitiveKanaSensitive
      • Thai100CaseSensitiveAccentInsensitiveKanaSensitiveWidthSensitiveSupplementaryCharacters
      • Thai100CaseSensitiveAccentSensitiveKanaSensitive
      • Thai100CaseSensitiveAccentSensitiveSupplementaryCharacters
      • ThaiCaseSensitiveAccentInsensitiveWidthSensitive
  • > 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 のみ

  • Azure Synapse Link for SQL は、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 のインポート/エクスポートおよび抽出/デプロイ操作に含まれないため、DacFX では無視 "されます"。 インポート/デプロイされたデータベースで 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 に参加できません。