我试图禁用来自其他服务器的SQLServer2012ManagementStudio远程访问。我没有检查server属性-> Connections ->允许远程连接到此服务器。但是用户仍然可以通过远程访问Server数据库。
我有一个客户端应用程序在所有的网络计算机,需要访问数据库。我只想阻止SQLServer2012ManagementStudio远程访问。
谢谢。
发布于 2015-11-07 16:33:51
Management使用与普通客户端相同的接口与Server通信。您可以修改用户权限,使它们只能从某些表中读取,并且不能写入或更改。
发布于 2015-11-10 01:20:22
几项澄清和答复:
下面的
IF EXISTS(
SELECT * FROM master.sys.server_triggers
WHERE parent_class_desc = 'SERVER' AND name = N'Allow_only_Application_Login_Trigger')
DROP TRIGGER [Allow_only_Application_Login_Trigger] ON ALL SERVER
GO
CREATE TRIGGER Allow_only_Application_Login_Trigger
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
DECLARE @data XML
SET @data = EVENTDATA()
DECLARE @AppName sysname
,@LoginName sysname
,@LoginType sysname
,@LoginDomain sysname
,@HostName sysname
SELECT @AppName = [program_name]
FROM sys.dm_exec_sessions
WHERE session_id = @data.value('(/EVENT_INSTANCE/SPID)[1]', 'int')
SELECT @LoginName = @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname')
--,@LoginDomain = @data.value('(/EVENT_INSTANCE/LoginDomain', 'sysname')
,@LoginType = @data.value('(/EVENT_INSTANCE/LoginType)[1]', 'sysname')
,@HostName = @data.value('(/EVENT_INSTANCE/ClientHost)[1]', 'sysname')
IF @LoginName not in ('MyApplicationUser','sa')
BEGIN
ROLLBACK; --Disconnect the session
--Log the exception to our Auditing table
INSERT INTO master.dbo.loginAuditTable(data, program_name)
VALUES(@data, @AppName)
END
END; 来源:http://thesqldude.com/2012/04/07/how-to-prevent-users-from-accessing-sql-server-from-any-application-or-any-login-expect-your-main-application-its-login/
https://dba.stackexchange.com/questions/121107
复制相似问题