
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 SQL, RDS, 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
Now let’s capture your SQL Server data in Flow.
- Go to dashboard.estuary.dev and click Sources in the left sidebar.
- Click + New Source, then search for and select SQL Server from the connector catalog.
- 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
Next, go to the Destinations tab and click + New Destination.
- Search for ClickHouse in the connector catalog and click Materialization
- 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
- Name: Give it a unique name (e.g.,
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:
- Go to Integrations → ClickPipes
- Add a new Kafka pipe using these connection settings:
- Broker:
dekaf.estuary-data.com:9092
- Protocol:
SASL_SSL
- SASL Mechanism:
PLAIN
- Username: Your full Flow materialization name (e.g.,
your-org/clickhouse_orders_sync
) - Password: The auth token you configured in Step 4
- Schema Registry URL:
https://dekaf.estuary-data.com
- Broker:
- Select the topics (one per table) and map the fields to your ClickHouse schema
- 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.
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.
- Create your Estuary Flow account — Set up your first real-time SQL Server to ClickHouse pipeline in just a few clicks. No infrastructure. No code.
- Explore our tutorials — Learn how Flow works, walk through common integration patterns.
- Join the Estuary Slack community — Get technical guidance and connect with data leaders building real-time systems.
- Talk to our team — Let’s talk about your environment, compliance needs, and how Flow fits into your roadmap.
Start streaming real-time data from SQL Server to ClickHouse the reliable way—with Estuary Flow.
Related Guides
- SQL Server to Snowflake — Real-time sync with CDC and no-code setup
- SQL Server to PostgreSQL — Migrate or sync data instantly and reliably
- SQL Server to BigQuery — Stream analytics-ready data to BigQuery
- SQL Server to Apache Iceberg — Power your data lake with live SQL Server updates
- SQL Server to Databricks — Build real-time pipelines to Databricks with ease
FAQs
1. Can I move data from SQL Server to ClickHouse manually without Estuary Flow?
2. What’s the best tool to move data from SQL Server to ClickHouse?
3. Is Estuary a good fit for large-scale SQL Server databases?

About the author
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.
