重新启动 Sql Server Agent 是否安全?

重新启动 Sql Server Agent 是否安全?

我发现自己身处一个负责管理 SQL 服务器的开发人员的角色,这个角色很脆弱。我设置了一些按计划运行的作业,但希望在完成后收到电子邮件通知。

我已经设置了数据库邮件并成功发送了一条测试消息,但我收到一条错误消息,提示在没有建立会话的情况下尝试发送邮件。 在研究这个有很多传言说重新启动 SQL Server Agent 将解决该问题。

但在我深入探讨这个问题之前,我想问一下重新启动 SQL Server Agent 是否会产生任何意外后果?例如,它是否会影响任何当前作业,或者它是否有很大风险会关闭但不会重新启动?

这是 SQL 2005 x64 SP4。

答案1

代理仅用于处理正在运行的维护作业(备份、重新索引等)。在重新启动之前,请检查没有任何正在运行的作业,这样就没问题了。我以前从未重新启动过它,但就像其他任何事情一样,如果您担心的话,我会在非工作时间重新启动它。

答案2

根据我使用 SQL 的经验,您应该能够重新启动此服务而不会产生任何意外后果。只要 SQL Server 正在运行,一旦您停止代理服务,它重新启动就不会出现任何问题。

您在事件日志中看到了什么让您认为需要重新启动?

答案3

运行脚本以查明是否有任何作业正在运行。如果没有,则可以安全地重新启动它。

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

当你收到错误时,以下是解决方案

解决方案:基本上,由于安全配置,SQL Server 中默认禁用“即席分布式查询”,并且您无法使用 OPENROWSET 或 OPENDATASOURCE,如果您无法执行这两个行集函数,则无法访问任何远程数据源。那么如何解决这个问题?下面给出了启用“即席分布式查询”的脚本。

USE master
GO
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

- 输出

配置选项“显示高级选项”从 0 更改为 1。运行 RECONFIGURE 语句进行安装。配置选项“Ad hoc Distributed Queries”从 0 更改为 1。运行 RECONFIGURE 语句进行安装。

如上所示,“即席分布式查询”设置从 0 更改为 1。现在您可以轻松执行任何“即席查询”

注意:默认情况下,此选项设置为 0,您需要将其更改为 1 才能激活此功能。

相关内容