共用方式為


適用於 SQL 的 Azure Synapse Link 的限制和已知問題

本文列出適用於 SQL 的 Azure Synapse Link 的限制已知問題

限制

下列各節列出適用於 SQL 的 Azure Synapse Link 的限制。

Azure SQL Database 和 SQL Server 2022

  • 來源資料表必須具有主索引鍵。
  • 只有支援可寫入的主要複本作為適用於 SQL 的 Azure Synapse Link 的資料來源。
  • 來源資料表中的主索引鍵不支援下列資料類型。
    • real
    • float
    • hierarchyid
    • sql_variant
    • timestamp
  • 來源資料表的資料列大小不能超過 7,500 個位元組。 資料表若儲存非資料列的可變長度資料行,則 24 位元組指標會儲存在主記錄中。
  • 初始對來源資料表建立快照集時,不支援包含大型物件 (LOB) 資料且大小大於 1 MB 的來源資料表資料。 這些 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 個)。
  • 雖然資料庫可以啟用多個連結,但給定的資料表不能屬於多個連結。
  • 當資料庫擁有者沒有對應的登入時,適用於 SQL 的 Azure Synapse Link 將在啟用連結連線時遇到錯誤。 使用者可以使用 ALTER AUTHORIZATION 命令將資料庫擁有者設定為有效的使用者,以修正此問題。
  • 如果 SQL 集區不支援來源資料表所包含計算資料行的資料類型,則不會複寫資料行。 不支援的資料行包含下列各項。
    • image
    • text
    • xml
    • timestamp
    • sql_variant
    • UDT
    • 幾何
    • 地理位置
  • 最多可以將 5,000 個資料表新增至單一連結連線。
  • 針對適用於 SQL 的 Azure Synapse Link 啟用下列資料表資料定義語言 (DDL) 作業時,來源資料表上不允許這些作業。 允許所有其他 DDL 作業,但這些作業不會複寫至 Azure Synapse Analytics。
    • 切換分割區
    • 新增/卸除/改變資料行
    • 改變主索引鍵
    • 卸除/截斷資料表
    • 重新命名資料表
  • 如果資料定義語言 (DDL) + 資料操作語言 (DML) 是在明確交易 (在 BEGIN TRANSACTIONEND TRANSACTION 陳述式之間) 中執行,對應資料表的複寫將會在連結連線內失敗。

    注意

    如果資料表對於連結連線層級的交易一致性至關重要,請在 [監視] 索引標籤中檢閱 Azure Synapse Link 資料表的狀態。

  • 如果來源資料表正在使用下列任何功能,則無法啟用適用於 SQL 的 Azure Synapse Link。
    • 異動資料擷取
    • 時態性記錄資料表
    • 一律加密
    • 記憶體內部資料表
    • 資料行存放區索引
    • 圖表
  • 無法複寫系統資料表。
  • 來源資料庫的安全性設定不會反映在目標專用 SQL 集區中。
  • 啟用適用於 SQL 的 Azure Synapse Link 會建立名為 changefeed 的新結構描述。 請不要使用此結構描述,因為其保留給系統使用。
  • 您無法複寫具有專用 SQL 集區不支援之定序 (例如 UTF-8 和特定日文定序) 的來源資料表。 請參閱 Synapse SQL 集區中支援的定序
    • 此外,適用於 SQL 的 Azure Synapse Link 不支援某些泰文定序:
      • Thai100CaseInsensitiveAccentInsensitiveKanaSensitive
      • Thai100CaseInsensitiveAccentSensitiveSupplementaryCharacters
      • Thai100CaseSensitiveAccentInsensitiveKanaSensitive
      • Thai100CaseSensitiveAccentInsensitiveKanaSensitiveWidthSensitiveSupplementaryCharacters
      • Thai100CaseSensitiveAccentSensitiveKanaSensitive
      • Thai100CaseSensitiveAccentSensitiveSupplementaryCharacters
      • ThaiCaseSensitiveAccentInsensitiveWidthSensitive
  • 不支援 > 370MB 的單一資料列更新 (包括換頁儲存體)。
  • 當啟用 Azure SQL Database 或 SQL Server 2022 上的適用於 SQL 的 Azure Synapse Link 時,加速資料庫復原 (ADR) 的主動記錄截斷功能會自動停用。 這是必要動作,因為適用於 SQL 的 Azure Synapse Link 會存取資料庫交易記錄。 此行為類似於異動資料擷取 (CDC)。 使用中交易將繼續保留交易記錄截斷,直到交易認可且適用於 SQL 的 Azure Synapse Link 攔截,或交易中止為止。 這可能導致交易記錄比平常填得更滿且應受到監視,如此一來交易記錄就不會填滿。

僅 Azure SQL Database 適用

  • 具有少於 100 個 DTU 的免費層、基本層或標準層不支援適用於 SQL 的 Azure Synapse Link。
  • SQL 受控執行個體不支援適用於 SQL 的 Azure Synapse Link。
  • 不支援服務主體對來源 Azure SQL DB 進行驗證,因此在建立 Azure SQL DB 連結服務時,請選擇 SQL 驗證、使用者指派的受控識別 (UAMI) 或服務指派的受控識別 (SAMI)。
  • 如果 Azure SQL Database 邏輯伺服器已同時設定 SAMI 和 UAMI,Azure Synapse Link 會使用 SAMI。
  • 如果次要資料庫的名稱與主要資料庫的名稱不同,則發生 GeoDR 容錯移轉後,就無法在次要資料庫上啟用 Azure Synapse Link。
  • 如果您以 Microsoft Entra 使用者身分在資料庫上啟用了適用於 SQL 的 Azure Synapse Link,則時間點還原 (PITR) 將會失敗。 只有當您以 SQL 使用者身分在資料庫上啟用適用於 SQL 的 Azure Synapse Link 時,PITR 才能運作。
  • 如果您以 Microsoft Entra 使用者身分建立資料庫,並啟用適用於 SQL 的 Azure Synapse Link,SQL 驗證使用者 (例如,即使管理員角色) 將無法停用/變更適用於 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。
  • 若可用性群組中有非同步複本,則交易必須先寫入所有複本,然後才能發佈至適用於 SQL 的 Azure Synapse Link。
  • 已啟用資料庫鏡像的資料庫不支援適用於 SQL 的 Azure Synapse Link。
  • 不支援將已啟用適用於 SQL 的 Azure Synapse Link 的資料庫從內部部署還原至 Azure SQL 受控執行個體。

警告

在也會使用 Azure SQL 受控執行個體連結的資料庫上,不支援適用於 SQL 的 Azure Synapse Link。 請注意,在這些案例中,當受控執行個體轉換為讀寫模式時,您可能會遇到交易記錄已滿的問題。

已知問題

  • 適用於:適用於 Azure SQL Database 和 SQL Server 2022 的 Azure Synapse Link

  • 問題:當您刪除 Azure Synapse Analytics 工作區時,執行中的連結可能無法停止,這將導致來源資料庫認為連結仍在運作中,而且可能造成交易記錄填滿且不會遭到截斷。

  • 解決方法 - 這種情況有兩種可能的解決方法:

    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 SQL Database 和 SQL Server 2022 的 Azure Synapse Link
  • 這個行為較不常見。
  • 問題:當您嘗試啟用最近停用、尚未清除其中繼資料且狀態標示為「已停用」的資料表時,將會擲回錯誤,指出 A table can only be enabled once among all table groups
  • 解決方法:等候一段時間,讓停用的資料表系統程序完成,然後再次嘗試重新啟用資料表。
  • 適用於:適用於 Azure SQL Database 和 SQL Server 2022 的 Azure Synapse Link
  • 問題:針對使用 Azure Synapse Link 啟用的 SQL 資料庫,當您使用 SSDT 匯入/匯出和擷取/部署作業來匯入/設定新的資料庫時,不會在新資料庫中排除 changefeed 結構描述和使用者。 不過,DACFx 會忽略適用於 changefeed 的資料表,因為其在 sys.objects 中標示為 is_ms_shipped=1,而那些物件一律不會包含在 SSDT 匯入/匯出和擷取/部署作業中。 在已匯入/部署的資料庫上啟用 Azure Synapse Link 時,如果 changefeed 使用者和結構描述已經存在,系統預存程序 sys.sp_change_feed_enable_db 就會失敗。 如果您已建立與 Synapse Link 變更摘要功能無關且名為 changefeed 的使用者或結構描述,也會發生此問題。
  • 解決方法:
    • 手動卸除空的 changefeed 結構描述和 changefeed 使用者。 然後,就能在已匯入/部署的資料庫上成功啟用 Azure Synapse Link。
    • 如果您已在資料庫中定義與 Azure Synapse Link 無關且名為 changefeed 的自訂結構描述或使用者,而且您不打算使用適用於 SQL 的 Azure Synapse Link,就不需要卸除您的 changefeed 結構描述或使用者。
    • 如果您已在資料庫中定義名為 changefeed 的自訂結構描述或使用者,則此資料庫目前無法參與適用於 SQL 的 Azure Synapse Link。