Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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/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
使用任务计划程序关闭SQL代理时的安装程序警报_Sql_Sql Server - Fatal编程技术网

使用任务计划程序关闭SQL代理时的安装程序警报

使用任务计划程序关闭SQL代理时的安装程序警报,sql,sql-server,Sql,Sql Server,我正在寻找在SQL代理关闭时设置警报通知的方法,有时在windows修补程序应用或服务器重新启动时,SQL代理未重新启动,即使我们已设置SQL代理属性,但在SQL server意外停止时自动重新启动 如果SQL Server代理意外停止,则自动重新启动它 我还尝试在服务器上的组件服务上设置服务,以在“恢复”选项卡上,第一次失败时重新启动服务,并重新启动服务,但没有工作 是否可以通过任何方式获取警报,以便在代理关闭时手动重新启动服务?当代理关闭时,它将触发重新启动作业。您可以尝试创建一个批处理文件

我正在寻找在SQL代理关闭时设置警报通知的方法,有时在windows修补程序应用或服务器重新启动时,SQL代理未重新启动,即使我们已设置SQL代理属性,但在SQL server意外停止时自动重新启动

如果SQL Server代理意外停止,则自动重新启动它

我还尝试在服务器上的组件服务上设置服务,以在“恢复”选项卡上,第一次失败时重新启动服务,并重新启动服务,但没有工作


是否可以通过任何方式获取警报,以便在代理关闭时手动重新启动服务?当代理关闭时,它将触发重新启动作业。

您可以尝试创建一个批处理文件,在该文件下检查服务状态。这将发送一封SMTP邮件(使用powershell)并再次重新启动服务

对于/F“tokens=3 delims=:”%%H in('sc query“MyServiceName”^ findstr“STATE”)do( 如果/I“%%H”NEQ“正在运行”(

powershell-ExecutionPolicy ByPass-命令发送邮件消息-SmtpServer SmtpServer-发送到someone@domain.com-来自noreply@domain.com-主题测试-车身服务未运行

网络启动“MyServiceName” ) )

脚本准备好后,创建一个任务调度器来调用批处理文件。大约每1小时运行一次调度程序。

$AgentStatus=(获取服务-ComputerName-Name |其中对象{$\u.Status-eq“Stopped”}度量对象)。计数
$AgentStatus = (Get-Service -ComputerName <CompName> -Name <SqlServerAgentName> | Where-Object {$_.Status -eq "Stopped"} | Measure-Object).Count

If($AgentStatus -eq 1){
Start-Service -Name SqlServerAgentName

$SMPTPort = <Specify port number>

$From = "email1@domain.com"
$To = "email2@domain.com"

$Subject = "The SQL Server Agent Service in $env:ComputerName has been restarted."
$Body = "The SQL Server Agent Service <SqlServerAgentName> was in a Stopped state and has been restarted."

$SMTPServer = "SMTP SERVER"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, $SMPTPort)
$SMTPClient.EnableSsl = $false
$SMTPClient.Send($From, $To, $Subject, $Body)}
If($AgentStatus-等式1){ 启动服务-名称SqlServerAgentName $SMPTPort= $From=”email1@domain.com" $To=”email2@domain.com" $Subject=“已重新启动$env:ComputerName中的SQL Server代理服务。” $Body=“SQL Server代理服务处于停止状态,已重新启动。” $SMTPServer=“SMTP服务器” $SMTPClient=新对象Net.Mail.SMTPClient($SmtpServer,$smtpport) $SMTPClient.EnableSsl=$false $SMTPClient.Send($From,$To,$Subject,$Body)}
谢谢以色列。因此,如果我使用此代码创建PowerShell脚本,那么如何自动调用此脚本?1。将代码保存到文本文件中(修改后);2) 将文件扩展名更改为.ps1,即CheckSqlAgentServiceStatus.ps1,并将其放入要保留该文件的驱动器中的a目录(例如PowerShell_文件)(例如C:)。文件路径类似于C:\PowerShell\u files\CheckSqlAgentServiceStatus.ps1;3) 创建任务计划程序以执行PowerShell。下面的链接将再次指导您如何创建任务计划程序。但这是我必须为每天的运行设置时间表,对吗?实际上,我正在查看服务何时停止,然后它将自动运行,而不是每天,因为这种情况非常罕见。请查看此链接,了解如何使用Windows事件设置触发事件(SQL Server代理已停止的事件ID 102)。非常感谢。我更喜欢像任何windows事件发生一样自动运行(例如服务器停止或服务停止),然后触发并发送通知。