Connect to SQL Server with user credentials of another domain

pyodbc, python, sql-server

Solution

You can not pass a `UID` and `Password` and set `Trusted_connection=True` (your second connection string) to connect as a (impersonated) windows user. You can either connect as a SQL Server user (username and password) or as a windows authenticated user (trusted connection).

Your code should impersonate the windows user (as SSMS does) and then set `Trusted_connection=True` only.

This MSDN page WindowsIdentity.Impersonate has an example.

Since this works from SSMS it suggests there is the necessary trust between the domains.

Problem

How can I connect to a SQL Server database using user login/password that is in another domain? If I use my account to connect to DB, it works fine: ``` cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server_name;DATABASE=testdb;UID=MY_Domain\\username;PWD=pass; Trusted connection=YES') ``` But I need to use another user's credentials like ``` cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server_name;DATABASE=testdb;UID=Another_Domain\\username;PWD=pass; Trusted connection=YES') ``` When I try the latter I get an error of "failed login for MY_Domain\username" rather than for the user "Another_Domain\username". In both cases by running SQL Server Management Studio I can use Windows Authentication to connect to the db.

Original source