问题描述
使用 help of a user,我创建了一个 sql Server 代理作业,它每 10 分钟跟踪我网络上的几台服务器以收集所有连接:
USE [msdb];
GO
DECLARE @ServerName varchar(50),@Dynamicsql NVARCHAR(MAX)
DECLARE @myTableVariable TABLE (id INT,ServerName varchar(50))
insert into @myTableVariable values(1,'TESLABsql01T'),(2,'TESLABsql02T')
-- select * from @myTableVariable -- use thisfor test
Declare VarCursor cursor for
Select ServerName from @myTableVariable
Open VarCursor
FETCH NEXT FROM VarCursor INTO @ServerName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Dynamicsql='
INSERT INTO [msdb].[dbo].[ConnectionCounts_Remote]
SELECT ''' + @ServerName + ''' AS [ServerName],NAME AS DatabaseName,COUNT(STATUS) AS [NumberOfConnections],GETDATE() AS [TimeStamp],hostname,program_name,loginame
FROM '+@ServerName+'.master.sys.databases sd
LEFT JOIN '+@ServerName+'.master.sys.sysprocesses sp ON sd.database_id = sp.dbid
WHERE database_id NOT BETWEEN 1 AND 4
GROUP BY NAME,loginame'
EXEC (@Dynamicsql)
FETCH NEXT FROM VarCursor INTO @ServerName
END
CLOSE VarCursor
DEALLOCATE VarCursor
如此简单又如此美妙,查询每 10 分钟连接一次 TESLABsql01T
和 TESLABsql02T
。
问题是,在这些远程服务器上,如果我执行 sp_who2
,我仍然可以将用户连接为 DORMANT
。
所以这意味着我的服务器每 10 分钟跟踪一次这些服务器,但连接保持不变。
如何不从远程服务器而是从执行 sql 代理作业的本地服务器终止该连接?
欢迎提出任何建议。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)