2012-09-25 50 views
-2

如何限制在SQL Server 2008中的特定用户/登录创建,修改,删除报表的访问权限?如何限制特定用户或登录SQL Server中

+1

阅读有关(HTTP的[MSDN上'GRANT'声明]:// msdn.microsoft.com/en-us/library/ms187965.aspx) –

+0

这是一个更好看的地方[http://dba.stackexchange.com/](http://dba.stackexchange.com/)[这些帖子应该与你的问题相关](http://dba.stackexchange.com/search?q=How+do+I+restrict+access+for+CREATE%2C+ALTER%2C+DROP+statements+to+a+特别+用户%2Flogin +在+%5BSQL - 服务器%5D&提交=搜索) – whytheq

回答

0

的SQL许可层级与登录开始在实例级别,然后在数据库级用户,它映射到在实例登录。

除非您通过服务器角色和数据库角色(这些是简化权限管理的原则和安全措施的集合)或直接授予对象权限,否则用户及其相关登录将不具有任何权限。

在SQL Server中,DENY覆盖了GRANT,所以如果你的用户已经在授予他们对有问题的对象发出DDL的权限,那么你可以拒绝他们对特定对象的权限。语法此的一个例子,基于否认ALTER权限表如下:

DENY ALTER ON OBJECT::dbo.MyTable TO MyUser 

虽然你当然这种通过GUI的为好。在SSMS中,钻取数据库> MyDatabase>安全性>用户,然后打开相关用户的属性并在此处更改其分配。

数据库世界中的安全性非常重要,我强烈建议您调查使用Windows组服务器角色和数据库角色来管理您的权限,而不是以临时方式设置权限。我还建议一份完整的文档安全策略和例外文档,详细说明组织中的安全结构。保留这些工作文件将使您可以轻松跟踪谁可以做什么。这有助于避免不可追溯性问题,并使审计变得轻松。

我希望这会有所帮助。

0

你可以使用这个触发器,如果​​u想只有1数据库使用注释代码@event数据,写你的逻辑

CREATE TRIGGER [permissions] 
    ON ALL SERVER 
    FOR CREATE_Table,DROP_Table,ALTER_Table, 
     CREATE_View,ALTER_View,Drop_View, 
     CREATE_Trigger,ALTER_Trigger,Drop_Trigger, 
     CREATE_DATABASE,DROP_DATABASE,ALTER_DATABASE, 
     CREATE_USER,DROP_USER,ALTER_USER, 
     CREATE_FUNCTION,ALTER_FUNCTION,DROP_FUNCTION, 
     CREATE_Procedure,ALTER_Procedure,DROP_Procedure, 
     CREATE_ASSEMBLY,ALTER_ASSEMBLY,DROP_ASSEMBLY, 
     CREATE_ROLE,ALTER_ROLE,DROP_ROLE 

AS 

BEGIN 



-- DECLARE @Eventdata XML,@ActionType varchar(100),@DataBase varchar(100) 
    --SET @Eventdata = EVENTDATA() 
     --SET @[email protected]('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)') 
-- SET @[email protected]('(/EVENT_INSTANCE/DatabaseName)[1]', 'nvarchar(100)') 

    IF SYSTEM_USER IN ('user') 
       BEGIN 
       RAISERROR ('not allowed.', 16, 1); 
       ROLLBACK; 
    END 




    END   
相关问题