Sql-Server

賦予伺服器角色登錄會中斷儲存過程

  • December 18, 2019

我有一個名為user1. user1可以執行儲存過程[Test].[SP1]

EXEC [Test].[TestSortation]
EXEC [TestSortation]

上述兩個命令都有效。

現在如果我給user1伺服器角色sysadmin除了public. 上面 2 個語句中的後者失敗,並引發此錯誤:

找不到儲存過程“TestSortation”。

我不想更改數據庫中的每個儲存過程以手動將模式名稱包含在 EXECute 命令中。有人可以向我解釋為什麼會這樣。另外,有沒有辦法解決這個問題,自動修復我的儲存過程,架構預設為[Test]

授予CONTROL SERVER登錄而不是將其添加到sysadmin角色。

線上圖書中所述

DEFAULT_SCHEMA如果使用者是sysadmin固定伺服器角色的成員,則忽略的值。sysadmin固定伺服器角色的所有成員都具有dbo的預設架構。

CONTROL SERVER 提供與此相同的權利sysadmin但沒有此副作用。

一個警告:您需要檢查任何依賴於使用者明確成為sysadmin角色成員的程式碼(例如,使用 的程式碼IS_SRVROLEMEMBER)。

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