2010-05-26 84 views
0

我已經將一組SQL 2000數據庫遷移到SQL 2008中。大多數運行良好,但是我有一些存儲過程可以通過SQL Server代理作業調度並運行,這些作業會給我帶來麻煩。 許多預定的存儲過程的工作,但訪問其它數據庫比默認的數據庫存儲的特效與以下消息失敗:存儲過程權限問題

作爲用戶執行:XYZ \ YadaYada。服務器主體:「XYZ \ YadaYada」無法訪問當前安全上下文下的數據庫「MyOtherDatabaseOnSameServer」。 [SQL狀態08004](錯誤619)該步驟失敗。

顯然,我改了名字來保護有罪。

該帳戶是所有relavent數據庫中的用戶,並且是db_owner,db_datareader和db_datawriter的成員。

當我使用相同的帳戶(我試過很多)在SMS中的查詢窗口運行這些相同的過程,他們工作得很好。

我錯過了什麼?

回答

0

事情,你可能會看一看:

  • 誰是作業的所有者?
  • 在哪個用戶下運行sql-agent用戶?
+0

該工作的主人是dbo。 SQL Agent帳戶是Network Services,但我將其更改爲Domain Admin以查看是否有幫助。它沒。 謝謝 – 2010-05-27 10:51:45

0

這看起來像跨數據庫所有權鏈接問題。

檢查:

  • 的SQL服務器允許跨數據庫所有權鏈接
  • 所涉及的每個數據庫啓用跨數據庫所有權鏈接。
  • 用戶XYZ \ YadaYada是MyOtherDatabaseOnSameServer的註冊用戶。
  • 存儲過程的所有者與保存在MyOtherDatabaseOnSameServer中的對象的所有者相同。

希望有幫助。

+0

存儲過程的所有對象和所有者的所有者是dbo XYZ \ YadaYada是db的註冊用戶我確實想到了跨數據庫所有權鏈接並在服務器上設置了該選項。不知道每個分貝的選項。當我去設置數據庫的選項時,它變灰,不可設置。試圖找出原因。這似乎是一個可能的問題來源。雖然,我不明白爲什麼它可以從SMS查詢窗口中正常工作。想你的意見,我會繼續堵塞它。 – 2010-05-27 10:48:01

+0

您可能需要發出RECONFIGURE語句才能讓服務器選取配置更改。試試:sp_configure'cross db ownership chaining',1; GO RECONFIGURE; GO如果數據庫級選項仍顯示爲灰色,請嘗試重新啓動sql實例(如果允許的話) – 2010-05-27 20:57:56

0

當您遷移用戶時,您是重新設置了用戶還是僅僅從恢復/附加操作中獲得了用戶?

您可能需要在有問題的數據庫上運行exec sp_change_users_login 'Auto_Fix', '<username>',其中<username>是用戶的實際名稱。

+0

我正在使用的帳戶和用戶在遷移後添加。無論如何,我確實嘗試過,但沒有快樂。感謝您的意見。 – 2010-05-27 10:49:32