【问题标题】:MS SQL ping external serverMS SQL ping 外部服务器
【发布时间】:2014-06-17 18:57:25
【问题描述】:

是否有一种“好”的方法来检查网络主机是否已启动 使用“普通”SQL?我想到了一些特定于 MS-SQL 的 命令或者一些从 ping 脚本获取返回值的命令 在服务器本身上。

有人对此有想法吗?

【问题讨论】:

  • 问题是:为什么你要这样做?
  • My SQL 服务器存储指向外部 FTP 服务器提供的内容的链接。我希望我的服务器检查所有 X 分钟的 ftp 框是否已启动,如果不是,则运行更新并将相关内容标记为“临时”。不可用'。
  • 这不应该在应用层做,而不是在数据库层做?
  • 好点,基本上内容是由基于 java/jsf 的 web 应用程序显示的。猜猜在应用程序中实现某种 RegualarRunning 类会更好?!
  • 从长远来看,这将比试图将这些功能侵入 SQL Server 灵活得多。

标签: sql-server


【解决方案1】:

有两种可能的方式来回答您的问题: 1.你想知道SQL服务器是否在任意主机上运行
2. 您想使用一些查询从 SQL 服务器 ping 任意主机。

  1. 您可以使用 dariom 的答案。 1a。如果你想从另一个 SQL 服务器查询,你最好使用 SQL Server 的“链接服务器”功能。

  2. 您可以使用master.dbo.xp_cmdshell 存储过程执行 PING,然后将结果作为文本行和状态代码返回。

EXEC master.dbo.xp_cmdshell 'ping 192.168.1.1'

【讨论】:

  • 状态码不是很有用 - 对我来说,它在错误时返回 1,在成功时返回 0。但它也会在“TTL 在传输中过期”返回 0,因此它并不完全可靠。
  • @Tomalak:不幸的是,这就是您必须分析结果输出的地方。 :-/
【解决方案2】:

我假设您的意思是“普通”SQL 而不是“palin”:-)

如果您想查看 SQL 是否在主机上运行,​​您可以尝试使用 SSRP (SQL Server Resolution Protocol) 连接到 SQL Browser Service(但这需要在服务器上安装并运行)。

您可以尝试“最佳猜测”方法,并与端口 1433(SQL Server 数据库引擎的默认端口)建立 TCP 连接。如果端口打开,则可能是 SQL Server 正在侦听 - 然后您可以尝试连接到 SQL Server 并执行命令(例如 SELECT @@VERSION 或特定于您的应用程序的命令)。这种方法的问题:

  • 可以将 SQL Server 数据库引擎配置为使用非标准 TCP 端口。
  • SQL Server 甚至可能不使用 TCP - 您必须使用命名管道进行连接(我不确定这是如何完成的)。
  • 其他一些服务可以配置为使用 TCP 端口 1433。这并不意味着 SQL Server 正在侦听。
  • 如果端口 1433 已打开并被 SQL Server 使用,则需要提供凭据才能连接到它并执行命令。

基本上,最佳猜测方法仅适用于您控制的 SQL Server。

【讨论】:

  • 您好,谢谢您的建议!我想问题是我需要检查 FTP 框而不是 sql 服务器。还是谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多