我在客户端系统上安装了 SQL Server 2008 R2 Express。我们得到的信息是,有些人只是打开了 Management Studio 并更改了数据。
我们如何才能阻止这种情况的发生,我们能否记录他们正在改变的内容?
我在客户端系统上安装了 SQL Server 2008 R2 Express。我们得到的信息是,有些人只是打开了 Management Studio 并更改了数据。
我们如何才能阻止这种情况的发生,我们能否记录他们正在改变的内容?
我们怎样才能阻止这种情况发生
更改 SQL Server 上的登录名。用户只能连接到他们拥有凭据的数据库和服务器。
如果您使用 Windows 登录进行身份验证,您将需要使用其自己的登录名(使用runas
或类似)运行任何需要数据库的应用程序,再次仅授予对应用程序的访问权限。
我无法理解。runas
但我使用了@Martin Smith 的想法并构建了下面的解决方案。
它将用于禁用在任何登录中执行任何活动的所有非 sa 用户。我没有在活动目录中测试它。
拒绝 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