適用於 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 TRANSACTION
與END 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
- 此外,適用於 SQL 的 Azure Synapse Link 不支援某些泰文定序:
- 不支援 > 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 Synapse Analytics 工作區,這可能會導致來源資料庫中的交易記錄填滿
適用於:適用於 Azure SQL Database 和 SQL Server 2022 的 Azure Synapse Link
問題:當您刪除 Azure Synapse Analytics 工作區時,執行中的連結可能無法停止,這將導致來源資料庫認為連結仍在運作中,而且可能造成交易記錄填滿且不會遭到截斷。
解決方法 - 這種情況有兩種可能的解決方法:
- 在刪除 Azure Synapse Analytics 工作區之前,請先停止任何執行中的連結。
- 手動清除來源資料庫中的連結定義。
- 使用下列查詢,尋找需要停止的
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>;
- 卸除每個使用下列程序識別的連結。
EXEC sys.sp_change_feed_drop_table_group @table_group_id = <table_group_id>;
- 或者,如果您要停用給定資料庫的所有資料表群組,也可以使用下列命令停用資料庫上的變更摘要。
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
。 - 解決方法:等候一段時間,讓停用的資料表系統程序完成,然後再次嘗試重新啟用資料表。
嘗試在使用 SSDT (用於進行匯入/匯出和擷取/部署作業的 SQLPackage) 匯入的資料庫上啟用 Azure Synapse Link
- 適用於:適用於 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。
- 手動卸除空的