Skip to content
METRIC OAK

New: the 3-week Data Platform Assessment: fixed fee, priced roadmap. See what's included →

Migration

SQL Server to Snowflake migration: T-SQL conversion and the collation trap

How to migrate a SQL Server data warehouse to Snowflake: converting T-SQL procedures, case-insensitive collation versus case-sensitive Snowflake, data types, temp tables, SQL Agent jobs, SSIS and reconciliation.

Hemant Walchale

Hemant Walchale
· 2 min read

SQL Server warehouses move to Snowflake for elastic compute, less database administration and easier data sharing. T-SQL and Snowflake SQL are close enough that most queries convert with small changes. The difference that catches most teams is not syntax but collation.

This is the approach we recommend.

1. Inventory

List databases, tables, views, stored procedures, functions, triggers, SQL Server Agent jobs, SSIS packages, linked servers and the reports that read the warehouse. Query Store, DMVs and job history show what is actually used; retire the rest.

2. Know the differences

SQL Server Snowflake What to watch
Case-insensitive collation (common default) Case-sensitive comparisons by default Joins, filters and GROUP BY on text change. Normalize or set collations explicitly.
NVARCHAR, VARCHAR VARCHAR (UTF-8) Usually direct.
DATETIME, DATETIME2, DATETIMEOFFSET TIMESTAMP_NTZ, TIMESTAMP_TZ Check precision and time zone handling.
IDENTITY IDENTITY or AUTOINCREMENT Values will differ; reconcile on business keys.
#temp tables, table variables Temporary tables Usually direct.
TRY...CATCH, @@ROWCOUNT, RAISERROR Snowflake Scripting EXCEPTION blocks and SQLROWCOUNT Rewrite error handling.
Clustered and non-clustered indexes None; optional clustering keys Drop index logic.
Triggers Streams and Tasks, or pipeline logic Move out of the database.
Linked servers Ingestion pipelines or data sharing Replace cross-server queries.
SQL Server Agent Snowflake Tasks or an orchestrator Rebuild schedules.
SSIS dbt or Snowflake SQL with an orchestrator See our SSIS guides.

3. Land raw, transform in Snowflake

Load raw data with a replication or CDC tool, COPY INTO or Snowpipe, then move transformation logic into SQL inside Snowflake (often with dbt), separating warehouses for loading, transformation and BI.

4. Reconcile and repoint reports

Compare every table by domain: row counts, totals and row-level differences, matched on business keys. Collation and timestamp precision explain most mismatches. Repoint Power BI, SSRS or other reports once owners sign off.

5. Retire SQL Server

Disable Agent jobs and SSIS packages on each domain’s cutover day, then decommission instances and licences as they empty.

The short version

Fix collation first, convert T-SQL with tooling and rewrite error handling, drop indexes, move triggers and Agent jobs to Streams and Tasks, rebuild SSIS as SQL in Snowflake, reconcile on business keys and retire SQL Server by domain.

Staying in the Microsoft ecosystem? See SQL Server and SSIS to Microsoft Fabric. Browse all migration guides or compare platforms with the platform chooser.

Not sure where your own platform stands? Take the free 3-minute data platform scorecard, or see how we work on Snowflake. Unfamiliar terms are explained in the data engineering glossary.

Frequently asked questions

Why do joins return fewer rows after moving from SQL Server to Snowflake?

Usually collation. Most SQL Server databases use a case-insensitive collation, so 'ABC' equals 'abc'. Snowflake compares strings case-sensitively by default. Joins and filters on text columns can silently drop rows unless you normalize case or define collations deliberately.

Can T-SQL stored procedures be converted automatically?

Much of it. SnowConvert translates SQL Server T-SQL, including many stored procedures, into Snowflake SQL and Snowflake Scripting. Procedures using cursors, dynamic SQL, temp-table-heavy patterns or SQL Server system functions need review and testing.

What happens to SSIS and SQL Server Agent?

SSIS packages are rebuilt, typically as dbt models or Snowflake SQL with an orchestrator, and SQL Server Agent jobs become Snowflake Tasks or orchestrator schedules. Many teams land raw data in Snowflake first and move transformations into SQL inside Snowflake.

Have 30 minutes? Get a senior architect’s view of your data platform.

No sales deck. You talk to the engineer who would lead the work.

Book an architecture review