SQL Server - 是否通过链接服务器查询我的数据库?

Leo*_*rdo 4 sql-server linked-server

有没有办法知道我的 SQL Server 实例上的特定数据库是否正在通过链接服务器查询?

Dav*_*oft 10

不。链接服务器只是与您的 SQL Server 连接的其他 SQL Server。没有办法可靠地识别这些连接。

  • 这将出现在包含链接服务器目标并处理查询的服务器上。在链接服务器的目标上,您不会看到“linkedservernname”。无论如何,并非所有链接服务器访问都使用由 4 部分组成的名称。 (5认同)

Ale*_*sko 10

有一种可能的方法,它是查看会话/连接,并通过会话的属性猜测该会话来自异常源:

select * from sys.dm_exec_sessions s
    join sys.dm_exec_connections c on 
    s.session_id = c.session_id
Run Code Online (Sandbox Code Playgroud)
  • host_name = 这是服务器名称,您可以查看其上是否安装了 SQL Server
  • 客户端接口名称 = 'OLEDB'
  • 程序名称 = 'Microsoft SQL Server'
  • client_net_address = 这是IP地址,将提示您可能安装了SQL Server的服务器

特别是当您非常了解 IP 地址和主机的常用连接/会话(您的应用程序或用户)来自哪个时,您将能够区分任何可疑的内容

然后加入sys.dm_exec_requestssys.dm_exec_sql_text来获取会话正在执行的查询。查询可以是这样的

SELECT ... FROM "DB"."dbo"."Table" "Tbl1002"
Run Code Online (Sandbox Code Playgroud)

这将提示您数据库。

再次强调,我并不是说这在 100% 的情况下会有帮助,但可能会帮助您确定您正在寻找的内容