Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 基于SQL Server查询重新启动Windows服务_Sql Server_Windows_Powershell_Batch File_Cmd - Fatal编程技术网

Sql server 基于SQL Server查询重新启动Windows服务

Sql server 基于SQL Server查询重新启动Windows服务,sql-server,windows,powershell,batch-file,cmd,Sql Server,Windows,Powershell,Batch File,Cmd,我想基于SQL查询(MS SQL Server)重新启动windows服务。用例的细节在底部。有人能为这个问题建议一个CMD/Powershell查询吗?我将在调度程序上运行该查询 用例: 服务“BcMsg”必须全天候运行,并执行一些必需的任务。当它抛出错误时,服务正在运行,但没有完成其工作。那样的话,我们需要重新启动它。为了检查它是否遇到错误,我们可以在SQL数据库中检查它的执行日志 以下是所需解决方案的解释: IF EXISTS( SELECT 1 FROM [BcTable].[dbo

我想基于SQL查询(MS SQL Server)重新启动windows服务。用例的细节在底部。有人能为这个问题建议一个CMD/Powershell查询吗?我将在调度程序上运行该查询

用例: 服务“BcMsg”必须全天候运行,并执行一些必需的任务。当它抛出错误时,服务正在运行,但没有完成其工作。那样的话,我们需要重新启动它。为了检查它是否遇到错误,我们可以在SQL数据库中检查它的执行日志

以下是所需解决方案的解释:

IF EXISTS(
SELECT 1
FROM [BcTable].[dbo].[LOG]
WHERE [EntryDate] >= DATEADD(MINUTE,-5,GETDATE()) AND [EntryMsg] LIKE '%Error%'
)

THEN
RESTART BcMsg.exe

ELSE
KEEP CHILLING

您可以在Powershell中使用
Invoke SqlCmd
命令轻松完成此操作:

if ( ( Invoke-Sqlcmd -HostName YourServer -Database YourDB -Query "SELECT 1 FROM [BcTable].[dbo].[LOG] WHERE [EntryDate] >= DATEADD(MINUTE,-5,GETDATE()) AND [EntryMsg] LIKE '%Error%'").Length -gt 0)
{
    Restart-Service -Name YourServiceName
}

你做过调查吗?有一个问题。再多搜索一点,就会找到如何根据查询结果使用逻辑的示例。非常感谢!这正是我想要的答案。不得不花一些时间导入SQL server module+,使用实例而不是主机/服务器来正确连接,但在逻辑排序后就可以完成。