私のプロジェクトでは、SQL ServerでWindows認証機能を実装していますが、この奇妙な問題に直面しました。
接続文字列に新しいパラメータTrusted_Connection
を追加しました。Windows認証機能を有効にする必要がある場合はyes
、明示的に設定するように設定しno
ます。それでもデフォルトであるはずですno
。
接続文字列に空のユーザー名とパスワードを渡そうとするまで、この機能は正常に機能していました。
Driver={SQL Server};Server=localhost;Database=test;UID=;PWD=;Trusted_Connection=no
不思議なことに、これはデータベースとの接続を確立し、Windowsユーザー認証を使用しているようです。必要な権限を持たない他のユーザーから実行してテストしましたが、失敗しました。
SQLServerへの接続に使用されるAPIは次のとおりです。
SQLDriverConnect(
hDbc,
NULL,
ConnStr,
SQL_NTS,
NULL,
0,
NULL,
SQL_DRIVER_COMPLETE
);
これはこのAPIの予想される動作ですか?もしそうなら、私がこの情報を得ることができるリンクはありますか?
前もって感謝します。
Windowsに同梱されている「SQLServer」ODBCドライバーは、下位互換性のためにのみ提供されているレガシードライバーです。Trusted_Connectionの指定に関係なく、空のUIDをWindows認証の要求として解釈します。最新のドライバー(SQLServerネイティブクライアントおよびSQLServer用のODBCドライバーn)は、Trusted_Connection仕様を尊重します。
したがって、「SQLServer用のODBCドライバー11」を使用することで私の問題は解決しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加