Compatible versions
Dynamic tables require a running warehouse for their refresh; size it for your change volume.
Key Features
- CDC Streaming: utilizes Snowpipe streaming to deliver real-time changes from the source system.
- Insert Operation: writes CDC updates as inserts into the target Snowflake database, preserving the full change history.
- Dynamic Table: constructs a dynamic table to mirror the source table, enabling easy access to replicated data.
- Time Travel Support: retains historical data for time travel queries, facilitating data analysis and auditing.
- Key-Pair Authentication: relies on Snowflake’s key-pair authentication mechanism — no passwords.
- Schema evolution: new columns are added automatically as the source schema evolves.
Prerequisites
- A Snowflake account where you wish to sync your data.
- A role with the privileges listed under Role privileges below.
-
A key pair (no passphrase) for authentication. To set it up:
- Generate the key pair:
- Register the public key on the Snowflake user:
- Copy the private key without the header and footer lines:
- Generate the key pair:
Role privileges
Run these as a role that can grant on the target database —ACCOUNTADMIN, or the
owner of the database and schema:
USAGE on the database and schema makes them visible to the role. USAGE on the
warehouse is what lets it create the dynamic table and run that table’s refreshes —
the only part of provisioning that needs a running warehouse; the rest is
cloud-services DDL. CREATE TABLE covers the append-only changelog table the
connector creates per subscription. CREATE PIPE covers the Snowpipe Streaming
pipe it creates alongside each of those tables (<table>_STREAMING), which is the
object streamed rows actually arrive through — without it, provisioning fails
before the first row lands. CREATE DYNAMIC TABLE covers the current-state table
built over the changelog.
No INSERT, UPDATE or DELETE grant is needed: the connector creates the tables
it writes to and therefore owns them, and rows reach them through the pipe rather
than through SQL DML. If instead you point the connector at a schema whose tables
already exist and are owned by another role, that owner has to grant write and
schema-evolution rights on each one, or new source columns will fail to land:
If a subscription writes its dynamic table to a different schema than the
connector’s, repeat the
USAGE and CREATE DYNAMIC TABLE grants on that schema
too.