2010-12-04 6 views
1

エラーSQL Server 2008のサーバー側の "無効なユーザーID"(エラー18456、重大度:14、状態:5)

データベース管理者は、Microsoft SQL Server 2008のサーバー側のエラー"無効なログイン"(エラーを報告18456、重大度:14、状態:5)。サーバログから

エラー例:

Dec 1 2010 10:12AM - Login failed for user '{Active Directory Name #1}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #1}] 
Dec 1 2010 10:44AM - Login failed for user '{Active Directory Name #2}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #2}] 
Dec 1 2010 2:03PM - Login failed for user '{Active Directory Name #3}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #3}] 
Dec 1 2010 4:18PM - Login failed for user 'Admin'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #1}] 

{Active Directoryの名前}ドメインなしに、自分のログイン名と同じです。たとえば、フルネームは{domain} \ {Active Directory Name}となります。

ユーザー "Admin"のエラーは、Microsoft Access Visual Basic for Applications(VBA)コードを開発しているユーザーである{Active Directory Name#1}と同じIPアドレスから取得されます。私は、ODBC DSNリンク経由でデータにアクセスしても、適切なWindows認証接続文字列でVBAを最小限に使用するように設定する必要があると考えています。

環境

のMicrosoft Access 2003(フロントエンド)データベースの読み取り専用のMicrosoft SQL Server 2008の(バックエンド)データベース内のテーブルへのODBCファイルDSNのリンクを含みます。

私はフロントエンドデータベースの管理者権限を持っています。外部データセンターのホストされたサーバーにあるバックエンドデータベースに対する読み取り専用のセキュリティ権限があります。 DBAは、Windows認証のバックエンドデータベースを設定しています。

エンドユーザーがActive Directoryアカウントを使用してPCにログインし、フロントエンドデータベースを開き、Microsoft Access Query Designerを使用して、バックエンドデータベースへのテーブルリンクを使用してレポートを生成します。フロントエンドデータベースはMicrosoft Access Jet Securityを使用しません(私の知る限り、ログインプロンプトはありません)。

フロントエンドデータベースは、(目に見える)エラーは報告されず、予期した結果が得られます。

ODBCファイルDSNの内容

[ODBC] 
DRIVER=SQL Server 
Trusted_Connection=Yes 
StatsLogFile={path} 
StatsLog_On=Yes 
DATABASE={dbname} 
APP=Microsoft Data Access Components 
Description={general description} 
SERVER={server name} 

なぜファイルDSNのリンクがエラーなしで、動作しますが、サーバー側の無効なログインエラーが発生しますか?ありがとうございました。

+0

その他の注意事項:テーブルリンクは、開発、テスト、およびエンドユーザーの使用中に、クライアント側のエラーなしで機能します。ユーザー1,2および3は、バックエンドデータベース上のユーザーとして作成され、ロールdb_datareaderが付与されたActive Directoryグループのメンバーです。同じActive Directoryグループがサーバー自体へのログインとして作成され、db_datareaderおよびpublicロールが付与されました。ログインはバックエンドデータベース上のユーザーに正しくマッピングされます。 – iokevins

+0

注:2005年の代わりに2008年を反映するよう変更されました。本番環境は2005年ですが、開発環境は2008年です。 – iokevins

答えて

0

問題の原因は、文書化されていない(?)、ODBC接続文字列のMicrosoft Access 255文字制限のようです。

各Microsoft Access ODBCリンクテーブルは、 "Trusted_Connection = Yes"という行を含むDSNファイルで作成されました。

おそらく、これはWindows認証を使用するようにMicrosoft Accessに指示します。

しかし、ODBCでリンクされたテーブルのうちの1つをダブルチェックすると、 "Trusted_Connection = Yes"のテキストがテキストの最初の255文字の外にあることに気付きました。私はそれがコマンドをVBAイミディエイトウィンドウを使用して実行することにより、そこ

印刷CurrentDb.TableDefs(「{テーブル}」)である参照

を接続するが、これは、271文字ではなく、完全な文字列を出力することができます。最終の10の文字は、しかし、次のとおり

Trusted_Co

再リンクテーブルTrusted_Connectionを含むDSNファイルに=最初の255文字でYesラインが問題を解決しました。

ありがとうございます。

1

エンドユーザーにキャッシュデータが表示される可能性はありますか? SQL Serverはリモート接続を許可するように設定されていますか? ADアカウントは、適切なデータベースにログインしている資格を持つユーザーと同様に設定されていますか? ODBCマネージャーを使用してODBC接続をテストすると、正常に接続できますか?正常な接続テストでエラーが生成されますか?バックエンドデータベースとフロントエンドアプリケーションは同じドメインにありますか?そうでない場合は、ドメインの信頼関係が確立されていますか? (そうでない場合は、SQLログインを使用する必要があります)

これらは、このタイプの問題を解決してトラブルシューティングを行うために通常実行するすべてのタイプのものです。

+0

ODBCマネージャー経由のODBC接続は接続が成功したことを報告します。正常な接続テストでエラーが発生した場合は不明です。良い洞察 バックエンドデータベースとフロントエンドデータベースは同じドメインに存在します。 キャッシングとリモート接続の問題は(私にとっては)そう思わないかもしれませんが、私は可能性としてこれを念頭に置いていきます。 ADアカウントは適切なデータベースのログインユーザーと資格のあるユーザーとして設定されています。これは別の優れた可能性のように思われ、私は強力な可能性に向かって傾いています。 ありがとうございます。 – iokevins

+0

上記のデータベースのログイン/ユーザー用のAD設定に関する追加のコメントがいくつか含まれています。 – iokevins

+0

どのようにAccessデータベースがユーザーのアクセス許可を確認するように構成されていますか?おそらくクエリーデザイナーは、SQL Serverデータベース – blueberryfields

関連する問題