Ben*_*dgi 8 sql-server stored-procedures permissions role sql-server-2008-r2
我有一个名为user1. user1可以执行存储过程[Test].[SP1]
EXEC [Test].[TestSortation]
EXEC [TestSortation]
Run Code Online (Sandbox Code Playgroud)
以上两个命令都有效。
现在,如果我给user1的服务器角色sysadmin除了public。上面 2 个语句中的后者失败,并引发此错误:
找不到存储过程“TestSortation”。
我不想手动更改数据库中的每个存储过程以将模式名称包含在 EXECute 命令中。有人可以向我解释为什么会发生这种情况。另外,有没有办法解决这个问题,自动修复我的存储过程,将架构默认为[Test]?
授予CONTROL SERVER登录名而不是将其添加到sysadmin角色。
如在线书籍中所述:
DEFAULT_SCHEMA如果用户是sysadmin固定服务器角色的成员,则忽略的值。sysadmin固定服务器角色的所有成员都具有dbo的默认架构。
CONTROL SERVER 给予相同的权利,sysadmin但没有这种副作用。
一个警告:您需要检查任何依赖于明确是sysadmin角色成员的用户的代码(例如,使用 的代码IS_SRVROLEMEMBER)。
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |