A服务器上部署sqlserver。B服务器上(linux)部署了一个服务去实时查询A服务器上的视图并进行后续处理工作。
当A服务器上进行例维或者重启后,B服务器上的程序无法自动再次连接SQL。
想完成功能 去监听A服务器上上SQL的状态,发现A服务器上的SQL重启恢复正常后,等待1分钟后自动重启B服务器上的服务
编写一个脚本监听sql的运行状态并联动另一台服务器上的服务重启
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- OKX安生 2023-03-25 21:16关注
该回答引用于gpt与OKX安生共同编写:
- 该回答引用于gpt与OKX安生共同编写:
可以编写一个脚本来监听 A 服务器上 SQL Server 的状态,并在 SQL 服务重启后自动重启 B 服务器上的服务。下面是一个示例脚本的实现:
#!/bin/bash # 设置 SQL Server 连接信息 SQL_HOST="A服务器IP" SQL_PORT=1433 SQL_USER="SQL用户名" SQL_PASSWORD="SQL密码" SQL_DATABASE="数据库名" # 设置需要监控的服务名称 SERVICE_NAME="服务名称" # 检查服务是否启动 check_service() { if systemctl is-active $SERVICE_NAME >/dev/null; then echo "Service $SERVICE_NAME is running." else echo "Service $SERVICE_NAME is not running." systemctl start $SERVICE_NAME echo "Starting service $SERVICE_NAME..." fi } # 检查 SQL Server 是否可连接 check_sql() { if /opt/mssql-tools/bin/sqlcmd -S $SQL_HOST,$SQL_PORT -U $SQL_USER -P $SQL_PASSWORD -d $SQL_DATABASE -Q "SELECT @@VERSION" &>/dev/null; then echo "SQL Server is running." else echo "SQL Server is not running. Restarting service $SERVICE_NAME in 1 minute..." sleep 60 systemctl restart $SERVICE_NAME check_service fi } # 主循环 while true; do check_sql sleep 10 done
这个脚本会每隔 10 秒钟检查一次 SQL Server 和服务状态。如果发现 SQL Server 不可连接,则会等待 1 分钟后自动重启服务。如果服务已经在运行,则不会进行任何操作。
你可以将这个脚本保存为一个可执行文件,然后在 B 服务器上使用 systemd 等服务管理工具来自动启动和管理。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 python动态规划:N根火柴摆出的最大数字
- ¥20 (标签-excel)
- ¥200 求idea10和MyEclipse7.1
- ¥20 vb6.0截取当前窗体保存为jpg文件
- ¥20 苹果手机不使用大疆sdk怎么获取遥控器控制信息或如何接入大疆sdk并且成功上架sdk
- ¥20 woocommerce 注册按键重定向
- ¥100 求书法图像文字切割代码
- ¥15 同一个波形探测距离不同的目标,为什么fft之后得到的频谱图会发生移动,不应该时移不改变幅度谱吗(标签-matlab)(相关搜索:matlab仿真)
- ¥15 Proteus仿真程序只能执行一次
- ¥15 语音识别websocket报错