Security

SQL Server 代理在連結伺服器上以訪客身份登錄

  • August 31, 2015

我有一個名為 @test_credentials 的工作,它執行以下查詢

select * from openquery(SERVER2, 
'select USER_NAME(),* from openquery(SERVER1,''SELECT USER_NAME() '')') 

並將這些結果輸出到文件中。

作業“@test_credentials”:第 1 步,“test_credentials”:開始執行 2015-08-31 17:53:45

來賓 LinkedServerUser

(1 行受影響)

  1. SERVER1兩者的連結伺服器定義SERVER2都使用linkedserveruser 相互登錄(安全上下文選項)。
  2. 兩個連結伺服器定義都使用相同的選項定義
  3. linkedserveruser 使用者帳戶存在於兩台伺服器上,並且無論如何都不會被禁用。
  4. SERVER1 執行 AGENT 的服務帳戶對於和都是相同的SERVER2

所以我的問題是:

執行此作業時,為什麼 SQL Server 代理在 SERVER2 上以訪客身份登錄?

我個人會嘗試使用 ORIGINAL_LOGIN() 而不是 USER_NAME()。 USER_NAME() 返回與您在連接到的數據庫中的登錄關聯的**數據庫主體或使用者。**在這種情況下,您可能master在這兩種情況下都連接到。如果 LinkedServerUser 沒有特定的登錄名,master那麼SERVER2您將看到GUEST.

另一方面,如果您使用ORIGINAL_LOGIN(),您將獲得連接的伺服器主體,這兩種情況下都可能是 LinkedServerUser。

引用自:https://dba.stackexchange.com/questions/112745