0

我在客户端系统上安装了 SQL Server 2008 R2 Express。我们得到的信息是,有些人只是打开了 Management Studio 并更改了数据。

我们如何才能阻止这种情况的发生,我们能否记录他们正在改变的内容?

4

2 回答 2

4

我们怎样才能阻止这种情况发生

更改 SQL Server 上的登录名。用户只能连接到他们拥有凭据的数据库和服务器。

如果您使用 Windows 登录进行身份验证,您将需要使用其自己的登录名(使用runas或类似)运行任何需要数据库的应用程序,再次仅授予对应用程序的访问权限。

于 2012-12-24T13:08:44.057 回答
0

我无法理解。runas 但我使用了@Martin Smith 的想法并构建了下面的解决方案。

它将用于禁用在任何登录中执行任何活动的所有非 sa 用户。我没有在活动目录中测试它。

  1. 拒绝写
  2. 拒绝阅读
  3. 拒绝任何数据库
  4. 拒绝 Sql 连接。

    Create TRIGGER DisableSMSSEntry_trigger
    ON ALL SERVER  WITH EXECUTE AS 'sa'
    FOR LOGON
    
    AS
    
        BEGIN
        DECLARE @NtUserName AS NVARCHAR(100)
    
        IF ( (SELECT DISTINCT RTRIM(LTRIM(nt_user_name)) AS LogedUser  FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND login_name !='sa') >0 )
        BEGIN
        SET @NtUserName= (SELECT DISTINCT RTRIM(LTRIM(nt_domain+'\'+nt_user_name)) AS LogedUser  FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND login_name !='sa')
    
    
    
        DECLARE @membername  AS varchar(100),@rolename AS varchar(100)
        SET @membername=@NtUserName
        set @rolename ='DB_DenyDataWriter'
        EXEC sp_addrolemember @membername,@rolename
        set @rolename = 'DB_DenyDataReader'
        EXEC sp_addrolemember @membername,@rolename
    
        exec  (' DENY VIEW ANY DATABASE TO '+ @NtUserName )
        exec  ('DENY SQL CONNECT ' + @NtUserName )
        ROLLBACK
        END
    
    END
    
于 2012-12-28T06:02:50.853 回答