Skip to content

The same connection string keywords now work across our SQL drivers

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:


Driver Now accepts Already 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


Driver Language Available in
Microsoft.Data.SqlClient C# 7.1.0
go-mssqldb Go v1.11.2
mssql-python Python 1.15.0
Microsoft ODBC Driver 18 C++ 18.7.1.1
JDBC Java 13.6.0
OLEDB C++ 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.

Microsoft Tech Community originally posted this article on 29 September 2026 at 7:00 AM.

Leave a Reply