2016-11-22 6 views
0

私のプロジェクトでは、SQL ServerでWindows認証機能を実装していますが、この奇妙な問題に直面しました。接続文字列で空のユーザー名/パスワードが渡されたとき、Windows認証はSQL Serverでデフォルトで動作します

、私は新しいパラメータTrusted_Connectionを追加し、私たちは、私がyesとして設定していますWindows認証機能を有効にする必要があればそうでない場合は、明示的にnoそれを設定しています。デフォルトでさえ、noである必要があります。私は、接続文字列に空のユーザ名とパスワードを渡してみましたまで

機能が正常に動作した

Driver={SQL Server};Server=localhost;Database=test;UID=;PWD=;Trusted_Connection=no 

は奇妙なことに、これはデータベースとの接続を確立し、Windowsユーザー認証を使用するようです。必要な権限を持たず、失敗した他のユーザーから実行してテストされます。

SQL Serverに接続するために使用されるAPIは、次のとおりです。

SQLDriverConnect(
    hDbc, 
    NULL, 
    ConnStr, 
    SQL_NTS, 
    NULL, 
    0, 
    NULL, 
    SQL_DRIVER_COMPLETE 
); 

このAPIのこの予想される動作ですか?もしそうなら、私はこの情報を得ることができるリンクがありますか?

ありがとうございます。

答えて

0

Windowsに付属する「SQL Server」ODBCドライバは、下位互換性のためにのみ提供される従来のドライバです。これは、Trusted_Connection仕様に関係なく、Windows認証の要求として空のUIDを解釈します。現代のドライバ(SQL Server用のSQL ServerネイティブクライアントとODBCドライバ)は、Trusted_Connection仕様に準拠しています。

"SQL Server用ODBCドライバ11"を使用すると、私の問題が解決しました。

関連する問題