我在客户端系统上安装了 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