【问题标题】:SQL Server Query : Host nameSQL Server 查询:主机名
【发布时间】:2016-06-24 12:33:38
【问题描述】:

我有确切的查询文本以及执行查询的确切时间和日期, 如何找到执行此查询的主机名?

我使用的是 SQL Server 2008。

【问题讨论】:

  • 当你说主机名时,你是在想Web Server吗?
  • 你想要SELECT @@SERVERNAME吗?
  • 我猜 OP 需要执行查询的机器的主机名。
  • 你也可以使用Sql profiler。

标签: sql sql-server sql-server-2008


【解决方案1】:

你需要@@SERVERNAME

SELECT @@SERVERNAME

将返回执行查询的服务器名称。


HOST_NAME 将返回工作站名称

SELECT HOST_NAME()

【讨论】:

  • 这个我们肯定知道,我问的是执行这个查询的主机名或计算机名
【解决方案2】:

没有任何表包含有关执行查询的主机的历史信息 - http://www.sqlservercentral.com/Forums/Topic1334479-146-1.aspx

【讨论】:

  • 之前写的查询给出最有可能准确的结果
  • 关键是sys.dm_exec_requests返回有关正在执行的请求的信息,而master.dbo.sysprocesses包含有关正在运行的进程的信息。
  • sql server admin能知道这些信息吗?
  • 我认为他们不会这样做,除非您当时运行了分析器。
【解决方案3】:

您可以使用 HostName() 作为检查

SELECT HOST_NAME() AS HostName, SUSER_NAME() LoggedInUser

http://blog.sqlauthority.com/2009/05/26/sql-server-find-hostname-and-current-logged-in-user-name/

 SELECT @IP_Address = client_net_address
    FROM sys.dm_exec_connections
    WHERE Session_id = @@SPID;

How to get the client IP address from SQL Server 2008 itself?

How to identify the caller of a Stored Procedure from within the Sproc

【讨论】:

    【解决方案4】:

    我相信这是您将得到的最接近的结果:

    select host_name()

    正如docs 中提到的:“客户端应用程序提供了工作站名称,并且可能提供不准确的数据。不要依赖 HOST_NAME 作为安全功能。”

    【讨论】:

    • 这会给我我的主机名,请再次阅读问题
    • 我不是在询问我的主机名,请再次阅读问题
    • @ShahimKhlaifat 您是否在服务器本身上执行查询?如果您正在浏览网络应用程序,则 host_name() 将返回网络服务器。
    • 从 SQL Server 2016 开始 Host_Name() 将返回工作站的名称。在此之前,我认为它返回了一些不太有用的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多