Blog Post

SQL Server Blog
3 MIN READ

The same connection string keywords now work across our SQL drivers

DavidLevy's avatar
DavidLevy
Icon for Microsoft rankMicrosoft
Sep 28, 2026

For years we've been treating every one of our Microsoft SQL drivers as a distinct entity. We've heard your feedback that we need to re-examine that approach. A team running applications written in multiple languages against one database should not have to juggle multiple connection strings.

We are fixing that.

What changed

We added keyword aliases to SqlClient, JDBC, ODBC, OLE DB, and go-mssqldb, so the same spelling works across all of them.

All five now accept

  • Server
  • Database
  • UID
  • App
  • Encrypt
  • TrustServerCertificate
  • ApplicationIntent
  • MultiSubnetFailover
  • FailoverPartner

We added also added the following aliases:

DriverNow acceptsAlready worked as
SqlClient

ConnectTimeout

FailoverPartner

PacketSize

WorkstationID

columnEncryption

Connect Timeout

Failover Partner

Packet Size

Workstation ID / WSID

Column Encryption Setting

JDBC

uid

trusted_connection

app

connectTimeout

columnEncryption

quotedId

user

integratedSecurity

applicationName

loginTimeout

columnEncryptionSetting

quotedIdentifier

ODBC

ConnectTimeout

MultipleActiveResultSets

FailoverPartner

WorkstationID

no keyword

MARS_Connection

Failover_Partner

WSID

OLE DB

ConnectTimeout

MultipleActiveResultSets

WorkstationID

Timeout

MarsConn

WSID

go-mssqldb

Connect Timeout

Failover Partner

Application Intent

Trust Server Certificate

Multi Subnet Failover

Host Name In Certificate

Server SPN

WSID

App

connection timeout

failoverpartner

applicationintent

trustservercertificate

multisubnetfailover

hostnameincertificate

serverspn

workstation

no keyword

Nothing is deprecated. Connect Timeout still works in SqlClient, loginTimeout still works in JDBC, WSID still works in ODBC and OLE DB, MarsConn and Timeout still work in OLE DB. No public APIs changed. Move one app to the shared spellings and leave the rest alone.

One string, four languages

One string, assigned once:

Server=<server>;Database=AdventureWorksLT;UID=<user>;PWD=<password>;Encrypt=no;TrustServerCertificate=yes

We pass it unchanged to four clients. All four return the same five rows from SalesLT.Product.

C# on Microsoft.Data.SqlClient. Takes it as-is.

Go on go-mssqldb. Takes it as-is.

Python on mssql-python. Takes it as-is.

C++ on Microsoft ODBC Driver 18. We still use the same string, just with the driver name appended:

;Driver={ODBC Driver 18 for SQL Server}

Will things ever be perfect? No. Some drivers have specific requirements, like the ODBC specification that requires a driver name, like we just saw. That said, remembering to add one tag sure beats having to start over from scratch.

PHP and Django

PHP connects through the ODBC driver, so it picks up the ODBC keywords.

mssql-django runs on pyodbc by default. It can run on mssql-python per connection with OPTIONS = {"python_driver": "mssql_python"}. Either way it takes the server and database through Django settings and passes the rest through extra_params. On the mssql-python path it drops DRIVER, DSN, and SERVERNAME, because mssql-python bundles its own driver and rejects them. mssql-python also accepts spellings the ODBC driver does not, including Packet Size with a space and addr for the server, and normalizes them before connecting.

This is just the first step

You told us that when we say a keyword is supported it should mean the same thing in every language we ship. We aren't there yet. This is the first piece.

A big one on our list is Microsoft Entra authentication, although it is more difficult. The drivers rely on per-language frameworks that we do not own. Each has different levels of support for Microsoft Entra authentication methods. 

Where to get the new keywords

DriverLanguageAvailable in
Microsoft.Data.SqlClientC#7.1.0
go-mssqldbGov1.11.2
mssql-pythonPython1.15.0
Microsoft ODBC Driver 18C++18.7.1.1
JDBCJava13.6.0
OLEDBC++Coming in October

If a keyword you expect is still missing in a driver you use, open an issue on that driver's repo and tell us which one. We want to know what your priorities are.

Updated Sep 28, 2026
Version 1.0
No CommentsBe the first to comment