仅允许对数据库架构中的 2 个表进行更新访问

Lin*_*988 6 sql-server sql-server-2008-r2

我想要一个能够访问特定模式的登录名,但应该只能更新 2/3 表的访问权限。是否可以?

数据库在 SQL Server 2008 R2 上运行。如果可能,请指导我。

Ken*_*her 9

这是一个示例脚本

CREATE USER [UserName] FROM LOGIN [LoginName]

-- Grant SELECT on the schema
GRANT SELECT ON SCHEMA::SchemaName TO [UserName]
-- Grant UPDATE on the individual tables
GRANT UPDATE ON SchemaName.TableName1 TO [UserName]
GRANT UPDATE ON SchemaName.TableName2 TO [UserName]
Run Code Online (Sandbox Code Playgroud)

请记住,除非用户是某种级别的管理员,db_owner例如,您所做的任何拒绝都将覆盖任何形式的授权。如果你这样做:

DENY UPDATE ON SchemaName.TableName3 TO [UserName]
Run Code Online (Sandbox Code Playgroud)

那么在您撤销拒绝之前,您无法做任何事情都会授予他们更新访问权限。您可以添加用户以db_datareader授予他们SELECT权限,但这将授予他们SELECT对所有架构的权限,而不仅仅是一个架构。这仅取决于您要查找的内容。该命令是这样的:

EXEC sp_addrolemember 'db_datareader','UserName'
Run Code Online (Sandbox Code Playgroud)