【问题标题】:How to know which machine is running windows service如何知道哪台机器正在运行windows服务
【发布时间】:2014-03-19 11:22:09
【问题描述】:

我们在 sqlserver 数据库中有一个表。有一个 Windows 服务从该表中获取数据为空的记录。处理该记录并更新当前日期。该服务可能已安装在多个开发人员的机器上。这是一种查找运行该服务的数据库用户/机器名称列表的方法。如果服务在任何一台机器上运行,它使用同一个数据库并更新同一个表。

【问题讨论】:

  • 你试过 SQL Profiler 吗?
  • 我是 sql profiler 的新手。你能告诉我如何配置它以显示特定表上的活动吗?
  • 请提供您正在使用的完整版本名称。
  • SQL SERVER 2008 R2、SQL Server Profiler 10.50.1600.1 Microsoft 数据访问组件 (MDAC) 6.1.7601.17514 Microsoft MSXML 3.0 6.0 Microsoft Internet Explorer 9.11.9600.16521 Microsoft .NET Framework 2.0.50727.5477 操作系统 6.1。 7601

标签: sql-server windows-services


【解决方案1】:

打开 SQL Profiler => 事件选择选项卡 => 列过滤器按钮。

DatabaseName : Like: "目标数据库名称", TextData : Like : "目标表名"

点击确定。检查:显示所有列 => 检查 BatchCompleted,BatchStarting for HostName 列 => 点击运行

您将能够看到在目标表上进行的每一笔交易。然而, 您将无法过滤哪个应用程序正在访问指定的表(我相信 应用程序名称是:SqlClient 数据提供者) 除非您已将Application Name="My Application" 添加到您的应用程序的连接字符串中,在您的情况下这是一个 Windows 服务。

【讨论】:

  • 好的。我懂了。 "EventClass=Audit Logout" "Application Name = Queue Reader SQL Queue Committer =()" "NTUserName= SqlSrvReplicationSer" "LoginName=ASSEENONSCREEN\SqlSrvReplicationSer" "ClientProcessId=8676" 但是我怎样才能找到windows所在的系统进程正在运行?
  • 如果您完全按照我向您展示的那样进行操作,您会在最后一列 "HostName" 中找到它。这就是为什么我要求在我的回答中检查 HostName 操作
  • 是的,我也这样做了。但是 HostName 列没有任何价值。我可以看到所有行都是空白的。
  • 确实如此。从您上面发布的示例中,这是在本地服务器上运行的表上运行的复制服务。这就是主机名为空的原因
  • 好的。但是如何找到复制的名称?我想禁用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 2020-06-23
  • 1970-01-01
相关资源
最近更新 更多