來源 SQL Server 資料庫

本頁面包含下列資訊:

  • 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 標籤:

  1. 前往 Google Cloud 控制台的「串流」頁面。

    前往「串流」頁面

  2. 按一下要編輯的 SQL Server 串流。

  3. 在「Streams details」(串流詳細資料) 頁面中,按一下「Pause」(暫停)

  4. 依序點選「編輯」>「編輯串流設定」

  5. 按一下「新增標籤」

  6. 在「Key」(鍵) 欄位中輸入 enable_ddl_support_for_ct

  7. 在「Value」(值) 欄位中,輸入 true

  8. 按一下 [儲存]

  9. 按一下「開始」即可繼續直播。

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 億列,就無法回填資料,除非符合下列條件:
    1. 資料表具有專屬索引。
    2. 索引欄均不得為可為空值。
    3. 串流中會包含索引的所有資料欄。
  • 不支援啟用延遲持久性或加速資料庫復原 (ADR) 的資料庫。
  • 系統資料表不支援串流變更。
  • 不支援 Windows Active Directory (AD) 驗證。
  • 系統不支援下列資料類型,也不會複製到目的地:
    • SQL_VARIANT
    • HIERARCHYID
    • GEOMETRY
    • GEOGRAPHY
  • 資料串流會複製使用者定義的資料類型,但系統會將您衍生使用者定義類型的基礎資料類型儲存在目的地。舉例來說,如果您根據 VARCHAR(50) 資料類型定義 USERNAME 資料類型,資料會以 VARCHAR(50) 形式儲存在目的地。
  • 如果資料表沒有不重複索引,Datastream 就不支援大型物件欄 (TEXTNTEXTXMLIMAGE) 和最大變數長度欄 (VARCHAR(MAX)VARBINARY(MAX)NVARCHAR(MAX)) 的變更資料擷取。

    如果串流中未包含大型物件欄,系統就會支援變更資料擷取。

  • 使用變更資料表 CDC 方法時,Datastream 不支援複製下列來源結構定義變更:

    • 捨棄資料欄:這些資料欄中的資料會替換為 NULL 值。
    • 修改資料類型:Datastream 會嘗試將資料插入目的地,如果資料遭到拒絕,就會引發錯誤。
    • 重新命名資料欄:啟用 CDC 時,SQL Server 不支援這項操作。

    這類結構定義變更可能會導致資料毀損,或無法處理事件。

  • Datastream 不支援資料遮蓋功能。資料會複製,但不會遮蓋。

  • Datastream 不支援使用資料層應用程式套件 (DACPAC) 套件,複製套用至資料庫的變更。

  • Datastream 不會複製使用 WRITETEXTUPDATETEXT 陳述式所做的變更。

  • 除非資料欄標示為 PERSISTED,否則 Datastream 不支援複製計算結果欄

  • Datastream 不支援 PAGECOLUMNSTORECOLUMNSTORE ARCHIVE 壓縮類型。

使用交易記錄方法時的其他限制

如果您使用交易記錄 CDC 方法,還須遵守下列限制:

  • 不支援透明資料加密 (TDE)。
  • 不支援資料欄層級加密。這些資料欄中的資料會替換為 NULL 值。
  • 使用交易記錄 CDC 方法時,Datastream 不支援複製在建立串流後新增至來源結構定義的資料欄。新資料欄不會複製到目的地。
  • Datastream 不支援 ROLLBACK TO SAVEPOINT 陳述式。這類復原事件會遭到忽略,且不會複製到目的地。
  • 如果資料列大於 8 KB,Datastream 就不支援下列類型資料表的 CDC:
    • 沒有唯一索引的資料表
    • 資料表只包含一個不重複的非叢集索引,以及一或多個可變長度資料欄 (VARCHARVARBINARYNVARCHAR)
  • Datastream 不支援下列類型資料表中的大型物件欄 (TEXTNTEXTXMLIMAGE) 的變更資料擷取:

    • 沒有唯一索引的資料表
    • 資料表只包含一個不重複的非叢集索引,以及一或多個可變長度資料欄 (VARCHARVARBINARYNVARCHAR)

    如果串流中未包含大型物件欄,只有在資料表有有效索引時,系統才會支援這類資料表的變更資料擷取。

後續步驟