現在説明できない奇妙なシナリオがあります。私は、それが単なる「金曜日の気持ち」であるか、ここでの親切な唯一の人が私の脳を救い出し、「しかしなぜ!?」の無限ループから私を救うことを望んでいます。:)
SQL Server 2005を実行し、DNSエントリが次の2つのサーバー:
1. ServerA
2. ServerB
(まあ、彼らは実際にはそれと呼ばれていませんが、それで十分です...)
両方のSQLServerインスタンスには、他のサーバーを指すように構成されたリンクサーバーがあります。
明らかなセキュリティ上の理由から、LinkedServerのセキュリティ構成は次のように設定されています。
- Be made using the login's current security context
その他の「リンクサーバーオプション」は...
Collation Compatible: True
Data Access: True
RPC: True
RPC Out: True
Use Remote Collation: True
Collation Name: <blank>
Connection Timeout: 30
Command Timeout: 10
ログインは、両方のインスタンスで同じパスワードで作成されます。ログインには、関連するストアドプロシージャへの適切な実行権限が付与されます。
私はいくつかのコードを書き、そのログインの下でそれを実行します、そしてそれはすべてうまくいきます
しかし、これらのストアドプロシージャを実行するためにエージェントジョブを作成すると、すべてがうまくいきません。エージェントジョブの所有者は「automated_job_login」ですが、エラーログに次のように表示されます。-ユーザー「automated_job_login」のログインに失敗しました
(この場合も、有罪を保護するためにその名前が変更されています。)
そのユーザーとしてログインしたときになぜ機能するのか、一生理解できませんが、リンクサーバーに接続するとジョブエラーが発生します。(リンクされたサーバー接続の時点で間違いなくです。)
さらに混乱させるために、リンクサーバーのセキュリティ構成を「このセキュリティコンテキストを使用して作成する」に変更し、正しいパスワードで「automated_job_login」を指定すると、正常に機能します。
私は何かが欠けています、私は私がそうであるに違いないことを知っています、しかし私は何を見つけることができません。目が出血して失敗するまで、ドキュメントを読みました。私を助けてください :)
[Linked Server Secuiryオプションを「このセキュリティコンテキストを使用して作成する」のままにしておくことは、そのサーバーのすべてのユーザーに他のサーバーへの許容できないレベルのアクセスを与えるため、オプションではありません。]