Babelfish
Babelfish is a PostgreSQL-based SQL Server compatibility layer, open-sourced by AWS.
Overview
Pigsty lets you deploy Babelfish in mssql mode and provide, on top of PostgreSQL:
- SQL Server wire protocol compatibility (TDS,
1433) - T-SQL compatibility
- Unified integration with Pigsty capabilities (HA, backup, monitoring, IaC)
In v4.2.0, Babelfish defaults to PostgreSQL 17 and is part of Pigsty’s standard delivery path.
What Changed in v4.2.0
Compared with older Babelfish/PG15 docs, current behavior is:
- Default kernel upgraded to PG17 (
pg_version: 17) - Default package group:
babelfish + pgsql-common + sqlcmd - Mainstream platform coverage:
- OS:
el8,el9,el10,d12,d13,u22,u24 - Arch:
x86_64,aarch64
- OS:
mssqltemplate no longer requires an extramssqlrepo module (defaults tonode,infra,pgsql)
Older docs may still contain deprecated naming. Pigsty now consistently uses
Babelfishandbabelfishaliases.
Quick Start
Use the built-in Pigsty template:
./configure -c mssql
./deploy.yml
After deployment, connect directly with SQL Server clients:
sqlcmd -S <ip>,1433 -U dbuser_mssql -P DBUser.MSSQL -d mssql
Key Configuration
Core parameters in the mssql template:
pg_mode: mssql
pg_version: 17
pg_packages: [ babelfish, pgsql-common, sqlcmd ]
pg_libs: 'babelfishpg_tds, pg_stat_statements, auto_explain'
pg_databases:
- name: mssql
baseline: mssql.sql
extensions:
- { name: uuid-ossp }
- { name: babelfishpg_common }
- { name: babelfishpg_tsql }
- { name: babelfishpg_tds }
- { name: babelfishpg_money }
- { name: pg_hint_plan }
- { name: system_stats }
- { name: tds_fdw }
parameters: { 'babelfishpg_tsql.migration_mode': 'multi-db' }
pg_hba_rules:
- { user: dbuser_mssql, db: mssql, addr: intra, auth: md5, order: 525 }
pg_default_services:
- { name: primary, port: 5433, dest: 1433 }
- { name: replica, port: 5434, dest: 1433 }
Connectivity and Ports
Babelfish clusters expose two protocol endpoints:
- PostgreSQL protocol:
5432 - SQL Server protocol (TDS):
1433
With Pigsty service abstraction you can also use:
5433: fixed route to primary14335434: route to readable node1433
# Primary write access
sqlcmd -S <any-node-ip>,5433 -U dbuser_mssql -P DBUser.MSSQL
# Read replica query
sqlcmd -S <any-node-ip>,5434 -U dbuser_mssql -P DBUser.MSSQL
Notes
- Babelfish auth rules must use
md5instead of defaultscram-sha-256. - Default migration mode is
multi-db; switch withbabelfishpg_tsql.migration_modeif needed. - Not all native PostgreSQL extensions are directly usable on Babelfish kernels; validate package availability and compatibility first.
- Tighten HBA and network exposure for production; do not keep demo-level open rules.
Related Docs
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.