我发现自己处在一个负责pipe理SQL服务器的开发人员中。 我已经设置了一些按计划运行的工作,但是希望在完成时收到电子邮件通知。
我已经设置了数据库邮件,并成功发送了一条testing消息,但是我收到一个错误消息,说当没有build立会话时尝试发送邮件。 在研究这个问题时,有很多噪音,重新启动SQL Server代理将解决问题。
但是,在我深入兔子洞之前,我想问问是否有重新启动SQL Server Agent的意外后果? 例如,它会影响任何当前的工作,还是有很高的风险,它会closures,但不会重新启动?
这是SQL 2005 x64 SP4。
代理只处理运行维护工作(备份,重新索引等)。 检查在重新启动之前没有任何运行,你应该没问题。 我从来没有重新开始之前,但像其他任何事情,如果你担心,我会做的。
从我的SQL经验来看,您应该能够重新启动这个服务,而不会有任何意外的后果。 只要SQL Server正在运行,一旦停止,代理服务就不会再出现问题。
你在事件日志中看到了什么让你觉得需要重启?
运行脚本以确定是否有任何作业正在运行。 如果没有,那么重启它是安全的。
List Running Jobs /* DESCRIPTION: List the RUNNING jobs on an instance CONFIGURATION None Compatibility list: MSSQL2005 MSSQL2008 Does not work MSSQL2000 Legend @execution_status=1 Running @execution_status=4 Idle */ IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE ID = OBJECT_ID(N'tempdb..#JobInfo')) BEGIN DROP TABLE #JobInfo END SELECT * INTO #JobInfo FROM OPENROWSET('sqloledb', 'server=(local);trusted_connection=yes' , 'set fmtonly off exec msdb.dbo.sp_help_job @execution_status=1') SELECT -- [job_id] [originating_server],[name],[enabled] --,[description] ,[start_step_id] --,[category] ,[owner] --,[notify_level_eventlog],[notify_level_email],[notify_level_netsend],[notify_level_page],[notify_email_operator],[notify_netsend_operator],[notify_page_operator],[delete_level],[date_created],[date_modified] --,[version_number] ,[last_run_date] ,[last_run_time] ,[last_run_outcome] ,[next_run_date] ,[next_run_time] --,[next_run_schedule_id] ,[current_execution_status] ,[current_execution_step] ,[current_retry_attempt] --,[has_step],[has_schedule],[has_target] ,[type] FROM #JobInfo
当你得到一个错误,下面是解决scheme
解决scheme:由于安全性configuration,基本上SQL Server中“临时分布式查询”被禁用,并且不能使用OPENROWSET或OPENDATASOURCE,如果无法执行这两个行集函数,则无法访问任何远程数据源。 那么如何解决这个问题? 下面给出了启用“Ad hoc分布式查询”的脚本。
USE master GO sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO
–output
configuration选项“显示高级选项”从0更改为1.运行RECONFIGURE语句进行安装。 configuration选项“Ad hoc分布式查询”从0更改为1.运行RECONFIGURE语句进行安装。
正如你在上面看到的,“Ad hoc分布式查询”设置从0变为1.现在你可以很容易地执行任何“Ad hoc查询”
注意:默认情况下,此选项设置为0,您需要将其更改为1以激活此function。