web-dev-qa-db-ja.com

エラー28000:pyodbcでユーザーDOMAIN \\ userのログインに失敗しました

Pythonを使用して、ウィンドウ認証を使用してSQLデータベースに接続しようとしています。ここでいくつかの投稿を見ました(たとえば、 here )が、メソッドが機能しなかったようです。

たとえば、次のコードを使用しました。

cnxn = pyodbc.connect(driver='{SQL Server Native Client 11.0}',
                      server='SERVERNAME', 
                      database='DATABASENAME',               
                      trusted_connection='yes')

しかし、私は次のエラーを受け取りました:

Error: ('28000', "[28000] [Microsoft][SQL Server Native Client 11.0][SQL Server]
Login failed for user 'DOMAIN\\username'. (18456) (SQLDriverConnect); [28000] [Microsoft]
[SQL Server Native Client 11.0][SQL Server]Login failed for user 'DOMAIN\\username'. 
(18456)") 

上記のエラーメッセージで、実際のドメイン名とユーザー名をそれぞれDOMAINusernameに置き換えたことに注意してください。

また、UIDPWDを使用してみましたが、同じエラーが発生しました。

最後に、上記のリンクからの提案に従ってサービスアカウントを変更しようとしましたが、Log OnPropertiesにアクセスしたときに、コンピューターにservices.mscタブがありませんでした。

何を間違えたのか、どうすれば問題を解決できるのだろうか。

12
Alex

Windowsマシンからの接続:

MicrosoftのODBC SQL Server用ドライバー、Trusted_connection=yesは、ドライバーに「Windows認証」を使用するように指示し、スクリプトは、スクリプトを実行しているユーザーのWindows資格情報を使用してSQL Serverへのログインを試みますUIDおよびPWDを使用して接続文字列で代替Windows資格情報を提供することはできないため、他のWindowsユーザーとして接続する必要がある場合は、RUNASを使用して実行する必要がありますPython他のユーザーとしてのスクリプト..

UIDおよびPWDで指定された特定のSQL Serverログインで「SQL Server認証」を使用する場合使用する Trusted_connection=no

Windows以外のマシンからの接続:

Windows以外のマシンから接続する必要があり、SQL Serverが「Windows認証」のみを使用するように構成されている場合、MicrosoftのSQL Server用のODBCドライバーはKerberosの使用を要求します。 SQL Serverインスタンスが古いNTLM認証プロトコルをサポートするように構成されている場合、接続文字列にUIDPWD、およびDOMAINを指定して、FreeTDS ODBCを使用できます。

17
Gord Thompson

このcxn文字列を試してください。

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;PORT=1433;DATABASE=testdb;UID=me;PWD=pass')

http://mkleehammer.github.io/pyodbc/

2
Merlin

デフォルトのデータベース(MSSQLSERVER)への接続中に同様の問題が発生しました。デフォルトのデータベースに接続している場合は、削除してください

database = 'DATABASENAME'、

接続パラメーターセクションの行を再試行します。

乾杯、ディーパック

0

最初のオプションは、コマンドプロンプトを使用して資格情報が保存されている場合に機能します。もう1つのオプションは、接続で資格情報(UId、Psw)を提供することです。

次は私のために働いた:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=yourServer;DATABASE=yourDatabase;UID=yourUsername;PWD=yourPassword')
0
JAFER

私はすべてを試しましたが、これが最終的に私のために働いたものです:

import pyodbc
driver= '{SQL Server Native Client 11.0}'

cnxn = pyodbc.connect(
    Trusted_Connection='Yes',
    Driver='{ODBC Driver 11 for SQL Server}',
    Server='MyServer,1433',
    Database='MyDB'
)
0
user1761806