Estuary

How to Move Data from SQL Server to ClickHouse (No Code Needed)

Move data from SQL Server to ClickHouse without writing code. This step-by-step guide shows you how to set up a no-code, real-time or batch pipeline using Estuary Flow—fast, reliable, and Kafka-free.

Blog post hero image
Share this article

As businesses scale, so does the need for fast, flexible analytics. Microsoft SQL Server is a trusted choice for transactional workloads—but it wasn’t built for large-scale reporting or OLAP-style queries. As data grows, performance issues emerge: queries slow down, dashboards lag, and scaling becomes costly.

That’s where ClickHouse comes in.

ClickHouse is a high-performance, columnar OLAP database designed for real-time and high-throughput analytics. It’s ideal for dashboards, metrics, and behavioral insights—processing billions of rows per second with sub-second latency.

But here’s the challenge: how do you move data from SQL Server to ClickHouse without batch jobs, fragile ETL scripts, or Kafka?

In this guide, you’ll learn how to set up a no-code, CDC-powered pipeline using Estuary Flow, a fully managed platform for real-time and continuous data movement. With Flow, you can sync SQL Server to ClickHouse in just a few steps—low latency, schema-aware, and Kafka-free.

By the end of this guide, you’ll understand:

  • How to configure a reliable SQL Server to ClickHouse pipeline
  • What makes Estuary Flow different from traditional ETL
  • How CDC helps you sync changes efficiently and continuously

Let’s walk through the easiest way to modernize your SQL Server analytics with ClickHouse.

Why SQL Server Struggles with Scaling Analytics

Your production environment likely relies on SQL Server for good reason: it’s reliable, ACID-compliant, and battle-tested. It handles inserts, updates, and point lookups with ease—exactly what you want in a transactional system.

But analytics is a different game.

Once your team begins slicing behavioral data, exploring multi-month revenue patterns, or comparing product performance across segments, SQL Server starts to feel the strain.

Let’s say you’re running an internal report that breaks down usage metrics by customer tier over the last quarter. The query joins large tables, groups by dimensions, and spans tens of millions of rows. Even with indexes and careful tuning, it starts to drag:

  • Queries queue behind active transactions
  • CPU spikes and disk I/O increase
  • Replication lag makes read-only replicas unreliable
  • Dashboards begin timing out or returning partial data

These aren’t just nuisances—they’re signs that SQL Server is being asked to do something it wasn’t built for: serve analytical workloads at scale and in near real time.

Workarounds Only Delay the Problem

Adding read replicas or scaling vertically might buy you time, but it doesn’t change the core limitation. You’re still running transactional and analytical workloads on the same system, which leads to contention, rising costs, and brittle infrastructure.

The reality is simple: SQL Server was never designed to serve large-scale analytical queries and high-volume writes at the same time.

For analytics to scale cleanly, you need a system designed to ingest and scan massive datasets without locking or lag.

ClickHouse: A Purpose-Built Engine for Real-Time Analytics

ClickHouse isn’t just “fast.” It’s designed from the ground up for real-time, columnar analytics.

Originally developed at Yandex to power high-throughput reporting, ClickHouse thrives under the kinds of pressure that traditional databases buckle beneath. It’s not just a faster SQL Server—it’s a fundamentally different engine.

What Makes ClickHouse Different?

  • Columnar storage layout - Optimized for reading only the columns needed by analytical queries, making scans, filters, and aggregations incredibly efficient.
  • Vectorized execution model - Uses SIMD (single instruction, multiple data) processing to scan billions of rows with minimal CPU cycles.
  • No indexes required - ClickHouse can perform many queries without traditional indexes, relying on data ordering and segment pruning.
  • Compression-aware I/O - Highly compressed column files reduce disk usage and improve memory performance during large reads.
  • Built-in support for streaming ingestion - With features like ClickPipes, ClickHouse can consume Kafka-compatible topics natively, making it an ideal destination for change data pipelines.

Why ClickHouse Complements SQL Server

When you stream data from SQL Server into ClickHouse, you separate concerns cleanly:

  • SQL Server remains your source of truth, optimized for transactions and consistency.
  • ClickHouse becomes your analytics engine, optimized for speed, scale, and real-time insight.

This decoupling reduces load on your OLTP system while enabling teams to run complex queries across billions of rows, without delays or risk to production stability.

Whether you’re analyzing event streams, building dashboards, or serving customer-facing analytics, ClickHouse gives you the performance SQL Server was never meant to provide.

How to Stream SQL Server to ClickHouse Using CDC and Estuary Flow

Moving data from SQL Server into ClickHouse doesn’t have to mean batch pipelines, replication hacks, or Kafka infrastructure.

With Change Data Capture (CDC) and Estuary Flow, you can create a real-time streaming pipeline that keeps your analytical data in ClickHouse continuously updated, without impacting your transactional database.

CDC is a native feature in SQL Server that records row-level changes as they happen. Instead of dumping entire tables or polling for updates, Flow reads directly from these change logs and delivers structured events to downstream systems, like ClickHouse.

This allows you to:

  • Offload analytics from SQL Server
  • Avoid lag and replication delays
  • Keep data synced with low overhead

That’s where Estuary Flow becomes essential.

Why Estuary Flow Is Purpose-Built for This Pipeline

  • Built-in CDC support for SQL Server - Flow connects directly to SQL Server’s change tables, capturing inserts, updates, and deletes with minimal configuration. No complex triggers or polling logic required.
  • Automatic historical load + live sync - When the pipeline starts, Flow captures existing records (backfill) and then transitions to streaming changes, ensuring ClickHouse is complete and up-to-date.
  • Schema-aware and resilient - Flow enforces schemas at the collection level and helps manage changes in source structure over time, so downstream systems like ClickHouse don’t break.
  • Kafka-like delivery without Kafka - Using its Dekaf module, Flow emits change events as Kafka-compatible topics that ClickHouse consumes using ClickPipes, with no need to deploy or maintain Kafka clusters.
  • Production-grade reliability - Flow is fault-tolerant, supports exactly-once or at-least-once delivery, and provides observability through metrics and logs.

You can think of Estuary Flow as the connective tissue between your SQL Server and ClickHouse environments—handling all the complexity of syncing, structuring, and delivering data at streaming speed.

The best part? Once configured, the pipeline runs continuously. Your ClickHouse database always reflects the latest data from SQL Server, ready for real-time queries, dashboards, or anomaly detection.

Step-by-Step: Move SQL Server to ClickHouse with Estuary Flow

You can build a real-time pipeline from SQL Server to ClickHouse in just a few simple steps—no code, no batch jobs, and no Kafka setup required. Estuary Flow handles everything from change capture to streaming delivery so that you can focus on insights, not infrastructure.

Step 1: Enable CDC in SQL Server

Before you connect, make sure your SQL Server instance has Change Data Capture (CDC) enabled:

  • Turn on CDC at the database level
  • Enable CDC for each table you want to capture
  • Create a database user with permissions to access CDC logs

This step ensures Estuary can detect inserts, updates, and deletes in real time. If you’re using Azure SQLRDS, or Cloud SQL, follow platform-specific guidance to allow Estuary Flow to connect (via public IP or SSH tunneling).

Step 2: Connect SQL Server to Estuary Flow

Multiple SQL Server source connector options in Estuary

Now let’s capture your SQL Server data in Flow.

  1. Go to dashboard.estuary.dev and click Sources in the left sidebar.
  2. Click + New Source, then search for and select SQL Server from the connector catalog.
  3. Click Capture to begin setup.

You’ll now fill out the Capture Details:

  • Name: Give your capture a unique name
  • Data Plane: Choose the cloud region Flow will use for processing.

Then complete the Endpoint Config:

  • Server Address: Host and port of your SQL Server (e.g., db.company.com:1433)
  • User: The SQL Server user with CDC access (e.g., flow_capture)
  • Password: Password for that user
  • Database: The logical database name you want to capture from

If your database is behind a firewall or VPC, scroll down to Network Tunnel and configure SSH Forwarding using your SSH endpoint and private key.

Click Next to test the connection and move on.

Step 3: Select the Tables You Want to Capture

Once connected, Flow will auto-detect tables that have CDC enabled.

Here’s what to do:

  • Select one or more tables to capture
  • For any table that lacks a primary key, specify a key manually in the UI
  • Review the auto-generated Flow collections and their schemas

Each table you select will become a versioned, schema-enforced Flow collection, ready to stream to ClickHouse.

Click Publish to deploy the capture.

Step 4: Set Up ClickHouse as the Destination

Dekaf-backed ClickHouse destination connector

Next, go to the Destinations tab and click + New Destination.

  1. Search for ClickHouse in the connector catalog and click Materialization
  2. Fill out the Materialization Details:
    • Name: Give it a unique name (e.g., clickhouse_orders_sync)
    • Data Plane: Choose the same region you used for your SQL Server capture
    • Auth Token: Set a secure token — this will be used by ClickHouse to authenticate when consuming data

In the Endpoint Config, you’ll see options like:

  • Strict topic naming
  • Deletion behavior (to determine how deletes are handled)

Under Source Collections, click Modify and link the Flow collections you created from SQL Server.

Click Next, review, and publish the materialization.

Behind the scenes: Flow uses Dekaf, its managed Kafka-compatible emitter, to expose your data as Kafka topics. These topics are what ClickHouse consumes using ClickPipes. You don’t need to set up Kafka—Dekaf handles it all.

Step 5: Connect ClickHouse to Flow via ClickPipes

ClickHouse connects to Estuary via ClickPipes, using the Kafka protocol. Estuary’s Dekaf service makes this possible by exposing your collections as real-time Kafka topics—secure, hosted, and ready to consume.

In your ClickHouse Cloud dashboard:

  1. Go to Integrations → ClickPipes
  2. Add a new Kafka pipe using these connection settings:
    • Brokerdekaf.estuary-data.com:9092
    • ProtocolSASL_SSL
    • SASL MechanismPLAIN
    • Username: Your full Flow materialization name (e.g., your-org/clickhouse_orders_sync)
    • Password: The auth token you configured in Step 4
    • Schema Registry URLhttps://dekaf.estuary-data.com
  3. Select the topics (one per table) and map the fields to your ClickHouse schema
  4. Save and activate the pipe

Within seconds, ClickHouse will begin ingesting data directly from Flow’s Kafka-compatible output—no middleware required.

You’re Done: A Continuous, Production-Ready Pipeline

Once everything is live:

  • Your SQL Server changes are emitted as Kafka-style streams
  • ClickHouse ingests those streams via ClickPipes in real time
  • You didn’t need to deploy Kafka, maintain brokers, or write custom ingestion logic

The result? A production-grade streaming pipeline with end-to-end CDC, schema enforcement, and low-latency delivery—ready in minutes.

Migrating Data into ClickHouse With Estuary

Why Stream SQL Server to ClickHouse? 3 Key Benefits

Moving SQL Server data into ClickHouse with Estuary Flow doesn’t just simplify your architecture—it directly improves performance, reliability, and visibility across your analytics stack.

1. Offload Analytical Load from SQL Server

When analytical queries run on the same system that powers your transactions, everything slows down. Long-running scans interfere with inserts and updates, and even read replicas can become overwhelmed or lag behind. By syncing to ClickHouse, you isolate analytics from your operational workloads. SQL Server stays fast and responsive, while ClickHouse handles the heavy lifting of large-scale aggregation and reporting.

2. Real-Time Data Without Operational Complexity

With Change Data Capture and Estuary Flow, updates from SQL Server appear in ClickHouse within seconds. There's no need to wait on scheduled batch jobs or ETL refresh windows. The pipeline stays in sync automatically, giving your team real-time visibility into metrics, trends, and operational data—ideal for dashboards, anomaly detection, and live reporting.

3. Zero Infrastructure Overhead

Traditional pipelines often require managing Kafka clusters, orchestrating batch jobs, and writing custom transformation code. With Flow, everything from backfill to delivery is fully managed. You configure the pipeline once—no brokers, no retries, no manual schema fixes—and Flow keeps ClickHouse continuously updated with clean, validated data.

Final Thoughts: The Smart Way to Scale SQL Server Analytics

Running analytics directly on SQL Server works—until it doesn’t. As data volume increases and query demands grow, performance issues start stacking up. Slow dashboards, replication lag, and unpredictable load on production systems become routine headaches.

The better approach is to stream your data to a system built for analytics. ClickHouse delivers the performance you need, and Estuary Flow makes the sync seamless. With real-time change capture, exactly-once delivery, and no infrastructure to maintain, you get a modern pipeline that scales with your business, without adding complexity.

If you're ready to stop firefighting your ETL jobs and start enabling real-time insights, this setup offers a clear path forward.

Estuary Flow handles the complexity. You get continuous, reliable streaming from SQL Server to ClickHouse—set up in minutes.

Next Steps

If you're ready to modernize your analytics and take the pressure off your transactional database, now’s the time to act.

Start streaming real-time data from SQL Server to ClickHouse the reliable way—with Estuary Flow.


FAQs

    Yes, but it's complex and fragile. You’d typically need to enable CDC on SQL Server, write scripts to extract changes from the CDC tables, transform the data into Kafka-compatible format, and push it into ClickHouse using ClickPipes or custom ingestion logic. This often involves deploying and managing Kafka, handling schema changes manually, and writing retry-safe delivery code. Estuary Flow eliminates this operational burden with a fully managed, real-time pipeline that requires no custom scripting or infrastructure.
    Estuary Flow is the best way to move data from SQL Server to ClickHouse. It supports both batch and real-time sync, handles schema changes automatically, and requires no extra infrastructure like Kafka. It’s fast, reliable, and easy to set up.
    Absolutely. Estuary is built for scale. It supports high-volume SQL Server sources and efficiently streams changes to ClickHouse with low latency and strong consistency.

Start streaming your data for free

Build a Pipeline
Share this article

Table of Contents

Start Building For Free

About the author

Picture of Team Estuary
Team EstuaryEstuary Editorial Team

Team Estuary is a group of engineers, product experts, and data strategists building the future of real-time and batch data integration. We write to share technical insights, industry trends, and practical guides.

Popular Articles

Streaming Pipelines.
Simple to Deploy.
Simply Priced.
$0.50/GB of data moved + $.14/connector/hour;
50% less than competing ETL/ELT solutions;
<100ms latency on streaming sinks/sources.