Security
SQL Server 代理在連結伺服器上以訪客身份登錄
我有一個名為 @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 行受影響)
SERVER1
兩者的連結伺服器定義SERVER2
都使用linkedserveruser 相互登錄(安全上下文選項)。- 兩個連結伺服器定義都使用相同的選項定義
- linkedserveruser 使用者帳戶存在於兩台伺服器上,並且無論如何都不會被禁用。
SERVER1
執行 AGENT 的服務帳戶對於和都是相同的SERVER2
。所以我的問題是:
執行此作業時,為什麼 SQL Server 代理在 SERVER2 上以訪客身份登錄?
我個人會嘗試使用 ORIGINAL_LOGIN() 而不是 USER_NAME()。 USER_NAME() 返回與您在連接到的數據庫中的登錄關聯的**數據庫主體或使用者。**在這種情況下,您可能
master
在這兩種情況下都連接到。如果 LinkedServerUser 沒有特定的登錄名,master
那麼SERVER2
您將看到GUEST
.另一方面,如果您使用
ORIGINAL_LOGIN()
,您將獲得連接的伺服器主體,這兩種情況下都可能是 LinkedServerUser。