這個頁面包含以下資訊:
- Datastream 處理從來源 SQL Server 資料庫擷取資料的行為。
- Datastream 支援的變更資料擷取 (CDC) 方法。
- Datastream 支援的 SQL Server 資料庫版本。
- 使用 SQL Server 資料庫做為來源時的已知限制。
行為
Datastream 會使用下列其中一種 CDC 方法,追蹤資料操縱語言 (DML) 的變更:
變更表格
變更資料表 CDC 方法可讓使用者縮短記錄保留時間,進而節省儲存空間,但與交易記錄方法相比,支援的輸送量較低。這個方法比交易記錄的限制少。舉例來說,這項功能可避免記錄檔遭到截斷,導致串流永久失敗,並支援加密資料表的複製作業。詳情請參閱「已知限制」。
使用這種 CDC 方法時,系統會透過專用變更資料表追蹤來源的變更。交易記錄仍會使用,但使用程度有限,您也不需要長期保留。將 DML 事件套用至來源資料表時,系統會將變更複製到對應的變更資料表。變更資料表的結構與來源資料表相同,但會額外加入資料欄,納入變更的中繼資料。只有已提交的交易會新增至變更資料表,並附上提交作業的記錄序號 (LSN)。
Datastream 如何處理來源結構定義的 DDL 變更
使用變更資料表 CDC 方法時,系統會為每個變更資料表建立擷取例項。每個擷取執行個體都會與擷取及追蹤的資料欄清單建立關聯。根據預設,擷取執行個體建立後,如果來源發生資料定義語言 (DDL) 變更,執行個體會忽略該變更。不過,您可以設定 SQL Server 資料流,在建立資料流和擷取執行個體後,複製新增至來源結構定義的資料欄。
事前準備
- 請確認 Datastream 使用者已獲派
db_owner權限。
複製新增至來源結構定義的資料欄
如要讓 Datastream 支援複製在建立串流後新增至來源結構定義的資料欄,請將 enable_ddl_support_for_ct 標籤新增至串流:
前往 Google Cloud 控制台的「Streams」頁面。
按一下要編輯的 SQL Server 串流。
在「串流詳細資料」頁面中,按一下「暫停」。
依序點選「編輯」>「編輯串流設定」。
按一下「新增標籤」。
在「Key」(鍵) 欄位中輸入
enable_ddl_support_for_ct。在「Value」(值) 欄位中輸入
true。按一下 [儲存]。
按一下「開始」即可繼續直播。
Datastream 每五分鐘會檢查cdc.ddl_history資料表是否有新的 DDL。如果串流設定中包含的資料表新增了資料欄,Datastream 會驗證資料表是否具有兩個擷取例項:
如果沒有,Datastream 會建立新的擷取執行個體,讀取原始擷取執行個體資料,直到 DDL 發生為止,然後從新的擷取執行個體開始讀取。
如果達到上限,系統會新增記錄項目,指出擷取執行個體數量已達上限,因此無法處理 DDL 變更。
交易記錄
使用這種 CDC 方法時,Datastream 會直接從交易記錄讀取來源的變更。這個方法需要的資源較少,可加快資料擷取速度,但限制較多。
為避免資料遺失,請務必確保記錄不會在 Datastream 讀取前遭到截斷。另一方面,如果記錄檔保留時間過長,會佔用儲存空間,最終可能導致資料庫執行個體進入唯讀模式。
為確保 CDC 讀取器有足夠時間讀取記錄,同時允許記錄截斷來釋出儲存空間,您需要套用額外的設定步驟,例如變更輪詢間隔和設定截斷安全措施。這些步驟可提供額外保護層,確保即使 Datastream 發生停機或來源資料庫與 Datastream 之間發生連線問題,Datastream 仍可讀取資料。
如需如何採取這些額外措施的詳細操作說明,請參閱「設定來源 SQL Server 資料庫」頁面,然後選取您的資料庫類型。
版本
Datastream 支援下列版本的 SQL Server 資料庫:
- 自行管理 (地端部署或雲端代管),使用下列版本:
- Enterprise:2008 年以後
- 標準版:2016 SP1 以上版本
- 開發人員:2008 年之後
- SQL Server 適用的 Amazon RDS
Azure SQL Database (S3 以上層級)。
SQL Server 適用的 Cloud SQL
Datastream 不支援下列版本的 SQL Server 資料庫:
- SQL Server Standard 版 (2008 年至 2014 年版本)
- SQL Server Express
- SQL Server Web
已知限制
使用 SQL Server 資料庫做為來源時,您必須遵守下列已知限制:
- 串流最多只能有 10,000 個資料表。
- 如果資料表超過 5 億列,除非符合下列條件,否則無法回填資料:
- 資料表有專屬索引。
- 所有索引資料欄都不可為空值。
- 串流中會包含索引的所有資料欄。
- 不支援啟用延遲持久性或加速資料庫復原 (ADR) 的資料庫。
- 系統資料表不支援串流變更。
- 不支援 Windows Active Directory (AD) 驗證。
Datastream 支援所有 SQL Server 校對,但代碼頁
0除外。如要檢查特定定序的程式碼頁面,請在 SQL Server 執行個體上執行下列查詢:SELECT *, CAST(COLLATIONPROPERTY(name, 'CodePage') AS INT) FROMsys.fn_helpcollations() WHERE name = COLLATION_NAME; 系統不支援下列資料類型,也不會複製到目的地:
SQL_VARIANTHIERARCHYID
Datastream 會複製使用者定義的資料類型,但系統會將您衍生使用者定義類型的基礎資料類型儲存在目的地。舉例來說,如果您根據
VARCHAR(50)資料類型定義USERNAME資料類型,資料會以VARCHAR(50)形式儲存在目的地。如果資料表沒有唯一索引,Datastream 就不支援大型物件資料欄 (
TEXT、NTEXT、XML、IMAGE、GEOMETRY、GEOGRAPHY) 和最大變數長度資料欄 (VARCHAR(MAX)、VARBINARY(MAX)、NVARCHAR(MAX)) 的 CDC。如果串流中未包含大型物件欄,系統就會支援變更資料擷取。
使用變更資料表 CDC 方法時,系統不支援複製下列來源結構定義變更,且可能導致資料損毀或無法處理事件:
- 捨棄資料欄:這些資料欄中的資料會替換為
NULL值。 - 重新命名資料欄:啟用 CDC 時,不支援 SQL Server。
修改資料類型:SQL Server CDC 擷取作業只會傳播下列資料類型變更:
- 變更字串的最大長度:例如,將
VARCHAR(50)資料型別變更為VARCHAR(100)。BigQuerySTRING資料欄沒有固定長度,可接受較長的字串。 - 擴大整數值範圍:例如將
INT資料類型變更為BIGINT。BigQueryINT64資料型別可容納新類型,不必變更結構定義。 - 變更數值的精確度和比例:例如,將
DECIMAL(10, 2)資料類型變更為DECIMAL(18, 4)。BigQueryNUMERIC型別具有較大的固定精確度 (38) 和比例 (9),因此支援這類變更。
如果是其他資料類型修改,Datastream 會嘗試將資料插入目的地,如果資料遭到拒絕,就會引發錯誤。
- 變更字串的最大長度:例如,將
- 捨棄資料欄:這些資料欄中的資料會替換為
Datastream 不支援複製包含資料遮罩資料欄的資料表。資料會複製,但不會遮蓋。
Datastream 不支援複製使用資料層應用程式套件 (DACPAC) 套件套用至資料庫的變更。
Datastream 不會複製使用
WRITETEXT或UPDATETEXT陳述式所做的變更。如果使用
enable_ddl_support_for_ct標籤複製新增至來源結構定義的資料欄,則無法將多個串流附加至同一個 SQL Server 來源資料表。由於 SQL Server 每個資料表最多支援兩個擷取執行個體,結構定義變更可能會導致競爭狀況,Datastream 會嘗試建立擷取執行個體,這可能會導致串流失敗。除非資料欄標示為
PERSISTED,否則 Datastream 不支援複製計算結果欄。Datastream 不支援
PAGE、COLUMNSTORE或COLUMNSTORE ARCHIVE壓縮類型。
使用交易記錄方法時的額外限制
如果您使用交易記錄 CDC 方法,則適用下列額外限制:
- 不支援透明資料加密 (TDE)。
- 不支援資料欄層級加密。這些資料欄中的資料會替換為
NULL值。 - 使用交易記錄 CDC 方法時,Datastream 不支援複製在建立串流後新增至來源結構定義的資料欄。新資料欄不會複製到目的地。
- Datastream 不支援
ROLLBACK TO SAVEPOINT陳述式。這類復原事件會遭到忽略,且不會複製到目的地。 - 針對下列類型的資料表,如果資料列大於 8 KB,Datastream 就不支援變更資料擷取:
- 沒有不重複索引的資料表
- 資料表只包含具有一或多個可變長度資料欄 (
VARCHAR、VARBINARY、NVARCHAR、GEOMETRY、GEOGRAPHY) 的非叢集式唯一索引
針對下列類型的資料表,Datastream 不支援大型物件資料欄 (
TEXT、NTEXT、XML、IMAGE、GEOMETRY、GEOGRAPHY) 的變更資料擷取:- 沒有不重複索引的資料表
- 資料表只包含一個或多個可變長度資料欄 (
VARCHAR、VARBINARY、NVARCHAR、GEOMETRY、GEOGRAPHY),以及不重複的非叢集索引
如果串流未納入大型物件欄,只有在資料表含有有效索引時,系統才支援這類資料表的 CDC。
使用交易記錄方法時,Datastream 會查詢來源資料庫,在稱為補充的有效查詢程序中,擷取特定時間點的遺漏值。補充內容適用於
XML、TEXT、NTEXT、IMAGE、GEOMETRY和GEOGRAPHY資料型別,以及VARCHAR(MAX)或VARBINARY等變數長度型別 (當資料列超過 8 KB 的網頁限制時)。由於 Datastream 會查詢資料庫來補充這些資料欄,因此如果快速連續更新或插入後快速刪除,可能無法擷取中間的變更。DELETE作業不會觸發補充功能。使用僅限附加的寫入模式時,這項限制特別重要,因為該模式會擷取所有中繼變更。
後續步驟
- 瞭解如何設定 SQL Server 來源,以便搭配 Datastream 使用。