[SQL Server] データソースのテスト接続だけエラーで失敗する

SQL Server のODBC データソースの「テスト接続」がエラーで失敗するときの解決方法(原因?)の一つ。

▼ 事象

上記どおり、データソースの「テスト接続」をしたときに、

?「ユーザー ” のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。」

というメッセージが表示されエラーに接続に失敗する。 テスト接続に失敗しているのに何故か他のサーバー(マシン)からのデータソース接続は成功する。

▼ 原因

おそらくAdministratorユーザでテストしていると思うが、この Administratorの認証に失敗していることが原因。

ローカルのユーザなのに何故??

それは、ローカルなのに外部からの接続になっているから。

ユーザの認証はNTLM認証で、Administratorユーザなら「<コンピュータ名>Administrator」でユーザを探す。この「 コンピュータ名」が”ローカル”ではない外部をさしているのだ。

このようになる場合は、hostsファイル (C:WINDOWSsystem32driversetcにある)に、以下のようなエントリーがある可能性が高い。

?127.0.0.1 ?? localhost

:(省略)

192.168.1.1? <コンピュータ名>

もうお気づきだと思うが、<コンピュータ名>が127.0.0.1でないので外部からの接続扱いになっていて、当然ローカルのユーザを探しにいかないので認証エラーになる。

▼ 解決方法

<コンピュータ名>は127.0.0.1のエントリーに登録する。

hostsファイル

?127.0.0.1 ?? localhost <コンピュータ名>

[SQL Server]Agent(エージェント)の実行ユーザ(サービスアカウント)の権限

SQL Server Agent サービスを起動しようとして、失敗(エラー)になるときの対処方法。

ずばり、実行ユーザ(サービスアカウント)の権限不足。(権限不足っていうメッセージ出たっけ??)

OSとしてユーザに対する権限は、実行ファイルにさえアクセスできれば低くてもよい(言いすぎかもしれない・・・)。

次がポイント!

SQL Serverに対してのユーザ権限として、サーバーロール「sysadmin」権限が必要。

この権限がないと、Agentサービスは起動できない。

サービスアカウントを「ローカルシステムアカウント(LocalSystem)」にしているなら、「NT AUTHORITYANONYMOUS LOGIN」にサーバーロール「sysadmin」権限を与える。非常に怖くて気持ち悪い感じだが・・・

っていうか、「ローカルシステムアカウント」って、実際OS上のどのユーザ???