我正在尝试授予 SQL Server 登录权限以创建存储过程并将它们绑定到自定义架构。在这种情况下,我创建了一个名为IC
. 然后将具有存储过程执行权限的服务帐户添加到架构中。
我的问题是:如何授予此 SQL Server 登录权限以创建绑定到 IC 的新存储过程?
我试过GRANT CREATE ON SCHEMA::IC TO [username];
但只得到
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'CREATE'.
有什么建议么?
您无法通过仅授予架构权限来将创建过程的能力更改为仅一种架构。(假设用户没有其他权限。)
为什么?
用户仍然需要在数据库中创建对象的权限,在这种情况下是过程。
您可以做的是授予用户
CREATE PROCEDURE
权限,然后将架构的所有者更改为该用户(更安全,请参阅下文了解更多信息)或授予该用户对 'IC' 的权限SCHEMA
。仅授予
CREATE PROCEDURE
不允许用户在 dbo 等模式上创建过程。创建登录名、对应的用户和 IC 架构
授予用户创建过程
更改架构的所有者(更安全的选项)
或授予用户访问架构的权限
授予架构权限所涉及的风险
资源
查看@DavidBrowne-Microsoft 对引用来源的回答,并在授予更改架构权限时获取有关“所有权链接”安全风险的更多信息。
测试
结果:
这失败了
撤消模拟
您可以尝试授予 ALTER 权限:
文档
从文档: