Sql-Server
賦予伺服器角色登錄會中斷儲存過程
我有一個名為
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
)。