首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用Server 2012 Management远程访问

禁用Server 2012 Management远程访问
EN

Database Administration用户
提问于 2015-11-07 16:25:30
回答 2查看 3.4K关注 0票数 0

我试图禁用来自其他服务器的SQLServer2012ManagementStudio远程访问。我没有检查server属性-> Connections ->允许远程连接到此服务器。但是用户仍然可以通过远程访问Server数据库。

我有一个客户端应用程序在所有的网络计算机,需要访问数据库。我只想阻止SQLServer2012ManagementStudio远程访问。

谢谢。

EN

回答 2

Database Administration用户

发布于 2015-11-07 16:33:51

Management使用与普通客户端相同的接口与Server通信。您可以修改用户权限,使它们只能从某些表中读取,并且不能写入或更改。

票数 1
EN

Database Administration用户

发布于 2015-11-10 01:20:22

几项澄清和答复:

  • SSMS中Server属性对话框下的“允许远程连接到此服务器”选项禁用来自远程服务器的远程连接,而不是来自客户端的远程连接(如SSMS)
  • 您可以实现只使用登录触发器或应用程序角色将数据库访问限制到客户端应用程序的预期效果。
  • 最简单的选择是使用登录触发器来防止未经授权的登录访问SQL服务器。每次建立到Server的新连接时,都会触发登录触发器。

下面的

示例(对登录“MyApplicationUser”的应用程序使用登录触发器)

代码语言:javascript
复制
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/

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/121107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档