web-dev-qa-db-ja.com

Python pyodbc SQL Server認証を使用してSQL Serverに接続する

ウィンドウユーザーの詳細は、ログインしているSql Serverユーザーとは異なります。そのため、ユーザー名(Admin_JJack)とパスワードを使用してデータベースに接続するpyodbcを使用しようとしました。しかし、ウィンドウユーザー(ジャック)の接続ショーは失敗し、どこがうまくいかないのかわかりません。

私の接続文字列:

connection = pyodbc.connect(
    "Driver={"SQL Driver"};"
    "Server= "ServerName";"
    "Database="DatabaseName";"
    "UID="UserName";"
    "PWD="Password";"
    "Trusted_Connection=yes"
)

pyodbc.InterfaceError:( '28000'、 "[28000] [Microsoft] [SQL Server Native Client 11.0] [SQL Server] Login failed for user 'Jack'。(18456)(SQLDriverConnect);

SQLサーバー認証を使用してデータベースに接続する方法

3
Jack Lim

「Trusted_Connection = yes」を使用すると、UIDキーとPWDキーの両方が無視され、Windowsアカウントが認証に使用されます。

Windows NTLMアカウントの代わりに認証にUIDおよびPWD値を使用する場合は、「Trusted_Connection = No」を使用するか、このオプションを接続文字列から削除する必要があります。

Trusted_Connection

ユーザーがKerberos [RFC4120]を使用するか、fIntSecurityフィールドで指定された別のプラットフォーム固有の認証を使用してユーザーアカウントを介して接続するかどうかを指定します(詳細については、[MS-TDS]セクション2.2.6.4を参照してください)。

有効な値は、「はい」、「1」、または同等の空の文字列、または「いいえ」です。値「No」が指定されていない場合、値「Yes」が使用されます。

値が「いいえ」の場合、データソースとの接続を確立するには、UIDキーとPWDキーを使用する必要があります。

DSNキーとUIDキーが接続文字列に含まれていない場合、またはUIDキーの値が空の文字列である場合、Trusted_Connectionキーの値は「はい」である必要があります。 Trusted_Connectionキーが接続文字列で指定されていない場合、値はDSNキーの設定の内容から取得する必要があります。 Trusted_ConnectionキーがDSNで指定されていない場合、または指定されたDSNが存在しない場合、デフォルト値は「いいえ」です。

Trusted_Connectionキーの値が「はい」の場合、UIDキーとPWDキーの両方が無視されます。それ以外の場合は、UIDキーを指定する必要があります。

Microsoftの実装では、このユーザーアカウントはWindowsユーザーアカウントであり、Trusted_Connectionキーの値が「はい」の場合はNTLM認証[MSDN-NTLM]が使用されます。

ソース: https://msdn.Microsoft.com/

8
Paulo Scardine