【问题标题】:Enable TCP connection for SQL Server for specific users only仅为特定用户启用 SQL Server 的 TCP 连接
【发布时间】:2014-01-26 15:03:53
【问题描述】:

我是否可以在 SQL Server 2008 R2 中仅对特定用户启用 TCP 连接,或者在另一方面,我是否可以阻止某些用户使用 TCP 远程连接到 SQL Server?

【问题讨论】:

    标签: sql sql-server database sql-server-2008 sql-server-2008-r2


    【解决方案1】:

    我会使用Logon Triggers 功能来完成此操作。

    【讨论】:

    • 非常感谢,这似乎是解决方案,但是如何知道此登录触发器中的连接类型(共享内存、命名管道或 TCP)
    • 在登录触发代码中,从EVENTDATA获取spid值,然后查看sys.dm_exec_connections视图,查找net_transport列。
    【解决方案2】:
    CREATE TRIGGER remote_connection_limit_trigger
    ON ALL SERVER WITH EXECUTE AS 'sa'
    FOR LOGON
    AS
    BEGIN
    DECLARE @result XML
    SET @result = EVENTDATA()
    DECLARE @spid NVARCHAR(MAX)
    
    SET @spid = @result.value('(/EVENT_INSTANCE/SPID)[1]', 'nvarchar(MAX)')
    
    DECLARE @connectionType NVARCHAR(MAX)
    SELECT @connectionType = net_transport FROM sys.dm_exec_connections WHERE  session_id = @spid
    
    
    IF @connectionType = 'TCP' AND ORIGINAL_LOGIN() <> 'temp_remote_user'
        ROLLBACK;
    END;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-27
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2020-04-22
      相关资源
      最近更新 更多