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

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

限制

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

Azure SQL 資料庫 和 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。
  • 針對適用於 SQL 的 Azure Synapse Link 啟用的數據表最多可以有 1,020 個數據行(而非 1,024 個)。
  • 雖然資料庫可以啟用多個連結,但指定的數據表不能屬於多個連結。
  • 當資料庫擁有者沒有對應的登入時,啟用連結連線時,適用於 SQL 的 Azure Synapse Link 就會發生錯誤。 使用者可以使用 命令將資料庫擁有者設定為有效的使用者 ALTER AUTHORIZATION ,以修正此問題。
  • 如果源數據表包含具有 Azure Synapse Analytics 專用 SQL 集區不支援之數據類型的計算數據行或數據行,這些數據行將不會復寫至 Azure Synapse Analytics。 不支援的資料列包括:
    • image
    • text
    • xml
    • timestamp
    • sql_variant
    • UDT
    • 幾何
    • geography
  • 最多可以新增 5,000 個數據表至單一鏈接連線。
  • 當源數據表已啟用 Azure Synapse Link for SQL 時,不允許下表 DDL 作業。 允許所有其他 DDL 作業,但不會復寫到 Azure Synapse Analytics。
    • 切換數據分割
    • 新增/卸除/改變數據行
    • 改變主鍵
    • 卸除/截斷數據表
    • 重新命名數據表
  • 如果在明確交易中執行 DDL + DML(在 和 END TRANSACTION 語句之間BEGIN TRANSACTION),對應數據表的復寫將會在連結連接內失敗。

    注意

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

  • 如果源數據表使用下列任何功能,就無法啟用適用於 SQL 的 Azure Synapse Link:
    • 異動資料擷取
    • 時態歷程記錄數據表
    • 一律加密
    • 記憶體中的 OLTP
    • 數據行存放區索引
    • 圖表
  • 系統數據表無法復寫。
  • 源資料庫的安全性組態將不會反映在目標專用 SQL 集區中。
  • 啟用適用於 SQL 的 Azure Synapse Link 會建立名為 changefeed的新架構。 請勿使用此架構,因為它保留供系統使用。
  • 無法使用專用 SQL 集區不支援的定序源數據表,例如 UTF8 和特定的日文定序。 以下是 Synapse SQL 集區中支援的定序。
    • 此外,Azure Synapse Link for SQL 目前不支援某些泰文語言定序。 這些不支援的定序包括:
      • Thai100CaseInsensitiveAccentInsensitiveKanaSensitive
      • Thai100CaseInsensitiveAccentSensitiveSupplementaryCharacters
      • Thai100CaseSensitiveAccentInsensitiveKanaSensitive
      • Thai100CaseSensitiveAccentInsensitiveKanaSensitiveWidthSensitiveSupplementaryCharacters
      • Thai100CaseSensitiveAccentSensitiveKanaSensitive
      • Thai100CaseSensitiveAccentSensitiveSupplementaryCharacters
      • ThaiCaseSensitiveAccentInsensitiveWidthSensitive
    • 目前不支援定序 Latin1_General_BIN2 ,因為有已知問題無法停止連結,也無法從複寫中移除基礎表。
  • 不支援單一數據列更新(包括分頁儲存空間)為 > 370 MB。
  • 在 Azure SQL 資料庫 或 SQL Server 2022 上啟用 SQL 的 Azure Synapse Link 時,會自動停用加速資料庫復原 (ADR) 的積極記錄截斷功能。 這是因為適用於 SQL 的 Azure Synapse Link 會存取資料庫事務歷史記錄。 此行為類似於已變更的數據擷取 (CDC)。 作用中交易會繼續保留事務歷史記錄截斷,直到交易認可和 Azure Synapse Link for SQL 追趕或交易中止為止。 這可能會導致事務歷史記錄填滿超過一般,而且應該受到監視,讓事務歷史記錄不會填滿。

僅限 Azure SQL 資料庫

  • 免費、基本或標準層不支援 Azure Synapse Link for SQL,且 100 個 DTU 以下。
  • SQL 受管理執行個體 不支援適用於 SQL 的 Azure Synapse Link。
  • 服務主體不支援向來源 Azure SQL DB 進行驗證,因此在建立 Azure SQL DB 鏈接服務時,請選擇 SQL 驗證、使用者指派的受控識別 (UAMI) 或服務指派的受控識別 (SAMI)。
  • 如果 Azure SQL 資料庫 邏輯伺服器同時設定 SAMI 和 UAMI,Azure Synapse Link 就會使用 SAMI。
  • 如果輔助資料庫的名稱與主資料庫不同,則一旦發生 GeoDR 故障轉移,就無法在輔助資料庫上啟用 Azure Synapse Link。
  • 如果您以 Microsoft Entra 使用者身分在資料庫上啟用適用於 SQL 的 Azure Synapse Link,則時間點還原 (PITR) 將會失敗。 PITR 只有在您以 SQL 使用者身分在資料庫上啟用適用於 SQL 的 Azure Synapse Link 時才能運作。
  • 如果您以 Microsoft Entra 使用者身分建立資料庫並啟用適用於 SQL 的 Azure Synapse Link,SQL 驗證使用者(例如,即使是系統管理員角色)將無法停用/變更 SQL 成品的 Azure Synapse Link。 不過,另一位 Microsoft Entra 用戶能夠在相同的資料庫上啟用/停用適用於 SQL 的 Azure Synapse Link。 同樣地,如果您以 SQL 驗證使用者身分建立資料庫,將適用於 SQL 的 Azure Synapse Link 啟用/停用為 Microsoft Entra 使用者將無法運作。
  • 不支援跨租用戶數據復寫,其中 Azure SQL 資料庫 和 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 受控執行個體 Link 的資料庫不支援適用於 SQL 的 Azure Synapse Link。 請注意,在這些案例中,當受控實例轉換為讀寫模式時,您可能會遇到事務歷史記錄完整問題。

已知問題

  • 適用於 - 適用於 Azure SQL 資料庫 和 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 資料庫 和 SQL Server 2022 的 Azure Synapse Link
  • 問題 - 當您嘗試啟用最近停用的數據表時,其元數據尚未清除且狀態標示為 DISABLED,就會擲回指出 的錯誤。A table can only be enabled once among all table groups
  • 解決方式 - 等候停用的數據表系統程式完成,然後再嘗試重新啟用數據表。
  • 適用於 - 適用於 Azure SQL 資料庫 和 SQL Server 2022 的 Azure Synapse Link
  • 問題 - 針對使用 Azure Synapse Link 啟用的 SQL 資料庫,當您使用 SSDT 匯入/匯出 和擷取/部署作業匯入/設定新資料庫時,changefeed架構和使用者不會在新資料庫中排除。 不過,DaxFX 會忽略變更摘要的數據表,因為它們在 中sys.objects標示為 is_ms_shipped=1 ,而這些對象永遠不會包含在 SSDT 匯入/匯出 和擷取/部署作業中。 在匯入/部署的資料庫上啟用 Azure Synapse Link 時,如果使用者changefeed和架構已經存在,系統預存程式sys.sp_change_feed_enable_db就會失敗。 如果您已建立與 changefeed Azure Synapse Link 變更摘要功能無關的使用者或架構,就會發生此問題。
  • 解析度-
    • 手動卸除空的 changefeed 結構描述和 changefeed 使用者。 然後,可以在匯入/部署的資料庫上成功啟用 Azure Synapse Link。
    • 如果您已在資料庫中定義與 Azure Synapse Link 無關的自定義架構或使用者 changefeed ,而且您不打算使用適用於 SQL 的 Azure Synapse Link,就不需要卸除架構 changefeed 或使用者。
    • 如果您已在資料庫中定義客戶 changefeed 架構或使用者,目前此資料庫無法參與適用於 SQL 的 Azure Synapse Link。

下一步