Sql server 将insert授予角色-未指定表

Sql server 将insert授予角色-未指定表,sql-server,ddl,Sql Server,Ddl,我在继承的一些SQL Server代码中遇到了这个谜团: GRANT INSERT TO SomeUserRole 我希望必须指定一个表或视图。运行此功能可以正常工作,但似乎没有任何作用。该角色没有插入任何表的权限。有什么想法吗?如果可能的话,我想摆脱这个角色,但是如果它给了这个角色一些访问权限,我将不得不保留它 谢谢 Joe表明,在数据库级别使用时,只将必需子句授予。该级别没有将其限制为特定表的语法 GRANT <permission> [ ,...n ] TO &l

我在继承的一些SQL Server代码中遇到了这个谜团:

GRANT INSERT TO SomeUserRole
我希望必须指定一个表或视图。运行此功能可以正常工作,但似乎没有任何作用。该角色没有插入任何表的权限。有什么想法吗?如果可能的话,我想摆脱这个角色,但是如果它给了这个角色一些访问权限,我将不得不保留它

谢谢 Joe

表明,在数据库级别使用时,只将必需子句授予。该级别没有将其限制为特定表的语法

GRANT <permission> [ ,...n ]  
    TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
    [ AS <database_principal> ]

<permission>::=  
permission | ALL [ PRIVILEGES ]

<database_principal> ::= 
        Database_user 
    | Database_role 
    | Application_role 
    | Database_user_mapped_to_Windows_User 
    | Database_user_mapped_to_Windows_Group 
    | Database_user_mapped_to_certificate 
    | Database_user_mapped_to_asymmetric_key 
    | Database_user_with_no_login  
GRANT[,…n]
至[,…n][授予期权]
[作为]
::=  
权限|所有[特权]
::= 
数据库用户
|数据库角色
|应用程序角色
|数据库用户映射到Windows用户
|数据库用户映射到Windows组
|数据库用户映射到证书
|数据库\用户\映射\到\非对称\密钥
|数据库用户没有登录

处的语法显示,当在数据库级别给出时,唯一需要的子句是
GRANT TO
。在这个级别上没有语法将它限制在特定的表中。谢谢@KenWhite-我还没有完全测试过这个。事实证明,该角色对每个表都有插入权限。有点安全漏洞!这段代码实际上具有相同的UPDATE和DELETE功能,所以我将把这个角色添加到db_datawriter中。当我有时间时,我会尝试将其从角色中移除,看看会有什么中断。这可能是因为那些烫发是不必要的,因为看起来存储过程无所不能。如果这完全回答了你的问题,我会继续把它作为未来读者的答案发布在这里。