我们能否撤消对SQL Server数据库上所有对象的所有特权,并仅授予对特定架构的几个表的访问权限
默认情况下,用户除具有权限外没有其他权限public ROLE。因此,如果您没有授予他们任何权限,则只需要给他们正确的权限即可。
如果您的意思是已经创建并赋予了USER很多个人权限,则可能会更快一些DROP,USER并使用正确的权限重新创建它:
USE Sandbox;
GO
CREATE USER TestUser WITHOUT LOGIN WITH SID = 0x0105000000000009030000003A1272CDF6378A479D2C1EC4E229CB56;
GO
CREATE TABLE dbo.TestTable1 (ID int);
CREATE TABLE dbo.TestTable2 (ID int);
GO
GRANT INSERT, SELECT, UPDATE, DELETE ON dbo.TestTable1 TO TestUser;
GRANT INSERT, SELECT, UPDATE, DELETE ON dbo.TestTable2 TO TestUser;
GO
EXECUTE AS USER = N'TestUser';
GO
INSERT INTO dbo.TestTable1 (ID)
VALUES(1);
INSERT INTO dbo.TestTable2 (ID)
VALUES(11);
GO
SELECT *
FROM dbo.TestTable1;
SELECT *
FROM dbo.TestTable2;
GO
REVERT
GO
DROP USER TestUser;
GO
CREATE USER TestUser WITHOUT LOGIN WITH SID = 0x0105000000000009030000003A1272CDF6378A479D2C1EC4E229CB56;
GRANT INSERT, SELECT, UPDATE, DELETE ON dbo.TestTable2 TO TestUser;
GO
EXECUTE AS USER = N'TestUser';
GO
--Fails
INSERT INTO dbo.TestTable1 (ID)
VALUES(2);
GO
--Succeeds
INSERT INTO dbo.TestTable2 (ID)
VALUES(12);
GO
--Fails
SELECT *
FROM dbo.TestTable1;
GO
--Succeeds
SELECT *
FROM dbo.TestTable2;
GO
REVERT
GO
GO
--Clean up
DROP USER TestUser;
DROP TABLE dbo.TestTable1;
DROP TABLE dbo.TestTable2;
如果这是您经常执行的操作,听起来您应该拥有角色,并且应该从特定角色中添加/删除用户。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。