1

I'm unable to connect to SQL-server using pyodbc module in python, my connection string is like this.

pyodbc.connect(driver=driv,host=server,database=db,trusted_connection="yes",user=user,password=pasw)

I'm hitting an error like this

Error: ('28000', '[28000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed. The login is from an untrusted domain and cannot be used with Windows authentication. (18452) (SQLDriverConnect); [28000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed. The login is from an untrusted domain and cannot be used with Windows authentication. (18452)')

The version of sql server I'm having is,

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Oct 19 2012 13:38:57 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 (Build 9200: )

which I had got by running SELECT @@VERSION query. I had used SQL Server Native Client 11.0 as driver. One thing I noticed is that in sql server management studio I used SQL server authentication instead of windows authentication. But here, by the error message it seems it is trying windows authentication instead. Is there any way I can use SQL server authentication instead of windows authentication here? I guess that would solve this problem.

2 Answers 2

4

With the more recent versions of Microsoft's ODBC driver for SQL Server, Trusted_Connection=yes takes precedence, so the connection will attempt to use Windows authentication even if UID= and PWD= are supplied. If you want to use SQL Server authentication then simply use Trusted_Connection=no and supply the UID= and PWD= for the SQL Server login.

Sign up to request clarification or add additional context in comments.

Comments

2

You are trying to connect to it from another domain controller then you will get this error when IntegratedSecurity = True, by default

Integrated security means simply - use your windows credentials for login verification to SQL Server. So, if you are logged in to a different domain controller then it will fail. In the case where you are on two different domain controllers then you have no choice but to use IntegratedSecurity = false

So you can try this:

conn = pyodbc.connect(
                      r'DRIVER={SQL Server Native Client 11.0};
                      SERVER=localhost;
                      Integrated_Security=false;
                      Trusted_Connection=yes;
                      UID=user;
                      PWD=password;
                      DATABASE= db')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.