[英]SQL Server 2005 - Linked Servers & Agent Jobs
我有一個奇怪的場景,我目前無法解釋。 我生活在希望這只是“周五的感覺”,或者這里的某個善意的鞋底會拯救我的大腦,讓我免於“但是為什么?:”的無休止循環:)
兩台服務器,運行 SQL Server 2005,具有 DNS 條目:
1. ServerA
2. ServerB
(嗯,他們不是真的這么叫,但它就足夠了......)
在兩個 SQL 服務器實例上,都配置了指向另一台服務器的鏈接服務器。
出於明顯的安全原因,LinkedServer Security 配置設置為:
- 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”,它可以正常工作。
我錯過了一些東西,我知道我一定是,但我找不到什么。 我已經閱讀了文檔,直到我的眼睛流血並且我失敗了。 請幫我:)
[將鏈接服務器安全選項保留為“使用此安全上下文:”不是一個選項,因為這會給該服務器的所有用戶提供對另一台服務器的不可接受的訪問級別。]
SQL 代理作業可能歸您的登錄名所有,但不會在該登錄上下文中執行。 它在SQL 代理服務帳戶上下文中
因為您有 SQL Server 2005,您可以使用 EXEC AS USER = 'mylogin' 作為存儲過程選項。
否則,您必須使用sp_add_jobstep
的@database_user_name
參數設置數據庫用戶名。 在 SSMS中,您可以設置上下文。 工作所有權與 IIRC 的設置略有不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.