Sql server 如何拒绝用户对除一个表以外的所有表的写预许可
我们有大约50个表,我们需要拒绝每个表的写入权限,除了特定用户的一个表Sql server 如何拒绝用户对除一个表以外的所有表的写预许可,sql-server,Sql Server,我们有大约50个表,我们需要拒绝每个表的写入权限,除了特定用户的一个表 我们如何才能做到这一点?这里有一种使用动态SQL的方法。由于ManagementStudio中的输出限制,打印可能不会显示整个命令。您需要更新用户名和异常 DECLARE @sql NVARCHAR(MAX); SET @sql = N''; SELECT @sql = @sql + ' DENY UPDATE, DELETE, INSERT ON ' + QUOTENAME(SCHEMA_NAME([s
我们如何才能做到这一点?这里有一种使用动态SQL的方法。由于ManagementStudio中的输出限制,打印可能不会显示整个命令。您需要更新用户名和异常
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';
SELECT @sql = @sql + '
DENY UPDATE, DELETE, INSERT ON ' +
QUOTENAME(SCHEMA_NAME([schema_id])) + '.'
+ QUOTENAME(name) + ' TO [username];' -- fix this username
FROM sys.tables
WHERE name <> 'exception'; -- fix this to be the one you want to allow
PRINT @sql;
-- EXEC sp_executesql @sql;
在SQL Server Management Studio中: 转到用户的属性页,然后转到用户映射选项卡 勾选public和db_datareader不勾选相应数据库的db_denydatawriter 这将只授予他们读取权限 然后,您可以使用类似于以下内容的查询为用户向表授予insert和update权限:
GRANT INSERT ON OBJECT::dbo.MyTable TO Fred
GRANT UPDATE ON OBJECT::dbo.MyTable TO Fred
到目前为止你试过什么?您是否尝试过完全按照您所描述的方式进行操作,拒绝写入49个表并授予1个?