Ray*_*and 11 sql-server sql-server-2012 troubleshooting connections
假设我找到了一个 SQL Server,但我不知道哪些应用程序连接到它。也许我找到了一个应用程序,但我不确定它是否是唯一一个使用它的应用程序。
有没有找到所有不同连接的好方法?
Jul*_*eur 15
您可以在 Activity Monitor 的 SSMS 中查看当前正在运行的进程。
您还可以使用sys.dm_exec_sessions以及sys.dm_exec_connections和sys.dm_exec_requests获取它。
询问:
SELECT DB_NAME(database_id) as [DB]
, login_name
, nt_domain
, nt_user_name
, status
, host_name
, program_name
, COUNT(*) AS [Connections]
FROM sys.dm_exec_sessions
WHERE database_id > 0 -- OR 4 for user DBs
GROUP BY database_id, login_name, status, host_name, program_name, nt_domain, nt_user_name;
Run Code Online (Sandbox Code Playgroud)
主机名、进程名或域用户名通常提供比 IP 地址更多的信息。其他列可以添加,如:login_time
,last_successful_logon
IP 和其他信息可以通过 JOIN 检索到sys.dm_exec_connections on session_id
: client_net_address
, local_net_address
, connect_time
, ports, ...
sys.dm_exec_requests也可以提供有用的信息:command
type, sql_handle
, ...
此查询只是一个示例。您必须JOIN
将这 3 个视图放在一起,并从其中一个输出/存储相关信息。
重新启动 SQL Server 时,这些视图中的数据将消失。因此,如果应用程序没有定期连接,使用作业或脚本(Powershell)定期存储它们可能是个好主意。
我也会建议 Julien 建议的内容,但我想通过 SQL Server 代理安排查询会是更好的主意,然后每次运行时都将信息转储到物理表中。两个 DMV 已加入sys.dm_exec_connections
并且sys.dm_exec_sessions
就像首先创建一个物理表
create table Session_Information
( session_id int,
net_transport nvarchar(40),
host_name nvarchar(128),
program_name nvarchar(128),
nt_user_name nvarchar(128),
connect_time datetime,
client_interface_name nvarchar(128),
client_net_address varchar(48),
local_net_address varchar(48),
login_name nvarchar(128),
nt_domain nvarchar(128),
login_time datetime
);
Run Code Online (Sandbox Code Playgroud)
然后将记录插入到该表中:
Insert into Session_Information
SELECT
c.session_id,
c.net_transport,
s.host_name,
s.program_name,
s.nt_user_name,
c.connect_time,
s.client_interface_name,
c.client_net_address,
c.local_net_address,
s.login_name,
s.nt_domain,
s.login_time
FROM sys.dm_exec_connections AS c
JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id;
Run Code Online (Sandbox Code Playgroud)
通过 SQL Server 代理安排此操作每 15 分钟左右运行一次,在一天结束时,您可以从表中看到您喜欢的所有内容session_information
。
归档时间: |
|
查看次数: |
41504 次 |
最近记录: |