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
· 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.