1

私のサーバー設定は少し奇妙です。DB 管理者の 1 人がリンク サーバーをサーバーに追加しました。リンク サーバーのプロパティの [セキュリティ] ビューに次のように表示されます。

Local server login to remote server login mappings:

Local Login            Impersonate           Remote User              Remote Password
domain\myusername        CHECKED

For a login not defined in the list above, connections will:

- Be made using the security context
  Remote login: linkedserveruser
  With password: **************

したがって、次のストアド プロシージャを作成すると、次のようになります。

SELECT *
INTO #TEMP
FROM LINKEDSERVERNAME.DBName.dbo.TableName

-- Update local table after processing #TEMP

SQL ジョブをセットアップすると、次のメッセージが表示されて失敗していました。

Message
Executed as user: NT AUTHORITY\NETWORK SERVICE. Login failed for user 'linkedserveruser'. [SQLSTATE 28000] (Error 18456).  The step failed.

ドキュメントを掘り下げた後、この問題を説明するKB811031記事を見つけ、セキュリティ コンテキストをマップしてジョブを osql として実行することを提案しました。

(上記のリンク サーバーの設定からわかるように) セキュリティ コンテキストは既にマップされているため、マップする必要はありませんでした。提案どおり、タイプをオペレーティング システム コマンドに変更しました。今ジョブを実行すると、次のメッセージが表示されます。

Executed as user: domain\MYMACHINENAME$. Msg 18456, Level 14, State 1, Server SOMEOTHERDATABASENAME, Line 1  Login failed for user 'linkedserveruser'.  Process Exit Code 0.  The step succeeded.

そして、実際には失敗したのに、ジョブは成功を報告しなくなります。リンク サーバーへのクエリを含むこのタイプのストアド プロシージャを SQL ジョブとして実行する方法について何か提案はありますか?

4

0 に答える 0