Questions tagged «sql-server-agent»

SQL Server代理是随SQL Server Standard Edition及更高版本一起安装的Windows服务。它提供了一种针对SQL Server实例执行或执行管理任务的自动化方法。SQL Server代理是每个DBA都应该熟悉并充分利用其潜力的工具。

8
SQL Server代理作业和可用性组
我正在寻找在SQL Server 2012可用性组中处理计划的SQL Server代理作业的最佳实践。也许我错过了一些东西,但是在当前状态下,我觉得SQL Server Agent并没有真正与这一出色的SQL2012功能集成在一起。 如何使计划的SQL代理作业知道节点切换?例如,我有一个在主节点上运行的作业,该作业每小时加载一次数据。现在,如果主服务器出现故障,我如何激活现在成为主服务器的辅助服务器上的作业? 如果我将作业始终安排在辅助服务器上,则它将失败,因为辅助服务器是只读的。

3
授予文件系统对SQLSERVERAGENT虚拟帐户的访问权限
我正在尝试NT Service\SQLSERVERAGENT根据此问题中的标记答案授予Windows帐户文件系统访问权限。我相信这是一个虚拟服务帐户,并且不会显示在控制面板->用户帐户区域中。 如何授予该服务帐户访问文件系统的权限?特别是在Windows 7上。 我已经阅读了几种方法,但似乎没有一种方法可供我选择。我尝试使用PowerShell方法,但是AD命令不是有效命令。我什至下载并安装了这些命令所需的Windows补丁。我还读到我应该能够通过SQL Server配置管理器或Management Studio来执行此操作。不过,我似乎无法弄清楚在何处调整这些权限。 SQL Server代理进程无法启动,并显示以下错误消息: Login failed for user 'NT SERVICE\SQLSERVERAGENT'. Reason: Failed to open the explicitly specified database 'msdb'. [CLIENT: <local machine>] 根据我的Google搜索,它与该帐户的权限有关。 我不确定数据库是否损坏,但是它表示数据库处于正常状态。SQL Server代理登录是sysadmin和public组的一部分。

5
在SSMS中找不到服务器代理
我正在遵循该指南-http: //www.sqlchicken.com/2009/07/how-to-create-a-server-side-trace-with-sql-profiler/,该指南将一直运行到步骤8 现在安排新创建的脚本。在SSMS中,连接到要跟踪的服务器。转到您的SQL Server代理并展开它,以便可以看到Jobs文件夹。右键单击Jobs文件夹,然后选择New Job。 我找不到SQL Server Agent。在哪里可以SQL Server Agent看到?我已经给当前用户所有访问权限。


2
获取SQL Agent作业的详细输出
我们有一个SQL Server代理作业,该作业运行维护计划以重新索引服务器上的所有数据库。最近,这已失败,但是作业历史记录无法提供足够的信息来诊断问题。 在作业历史记录中,它指出作业失败。该作业已由用户foo \ bar调用。运行的最后一步是步骤1(重建索引)。 在详细信息窗口中,有以下格式的多条消息: Executing query "ALTER INDEX [something] ON [a...".: 0% complete End Progress Progress: 2015-03-15 22:51:23.67 Source: Rebuild Index Task 正在运行的SQL语句被截断,并且我假设该语句的输出也被截断了,这使我无法识别出哪个特定的语句失败以及为什么。有什么方法可以提取这些消息的全文吗?

6
查看具有作业开始时间的SQL Server中正在运行的作业的脚本
如何编写脚本以查看具有作业开始时间的SQL Server中正在运行的作业? SELECT sj.name, sja.run_requested_date, CONVERT(VARCHAR(12), sja.stop_execution_date-sja.start_execution_date, 114) Duration FROM msdb.dbo.sysjobactivity sja INNER JOIN msdb.dbo.sysjobs sj ON sja.job_id = sj.job_id WHERE sja.run_requested_date IS NOT NULL ORDER BY sja.run_requested_date desc;

1
从非sysadmin域用户拥有的SQL Agent作业中运行SSIS包
我有两个SSIS程序包,它们作为大型SSIS部署的一部分,在夜间(通过SQL Server代理)按计划运行,没有任何问题。一切都使用Windows身份验证,并且计划的作业由sysadmin(我,我)拥有,并作为 SQL Server代理服务帐户运行。 因此,数据实际上是source system ~> transit db ~> staging ~> NDS通宵达旦的。 我关心的两个SSIS包分别针对一组特定的数据处理transit db ~> staging和staging ~> NDS部分。 域用户(非sysadmin)在中执行某项操作source system,并将感兴趣的数据推入transit db,因此我需要一种在工作时间内获取此更新数据以更新的方法NDS:决定了此人触发的最简单方法通过单击已启用宏的Excel工作簿中的按钮来表示该ETL,该工作簿通过ODBC(使用Windows身份验证)连接到SQL Server并执行存储过程。 存储过程如下所示: create procedure dbo.UpdateMaterialInventory as begin execute msdb.dbo.UpdateMaterialInventory; end [msdb]中的“姐妹”存储过程如下所示: create procedure dbo.UpdateMaterialInventory with execute as 'SqlAgentProxy' as begin execute msdb.dbo.sp_start_job N'NDS-ManualMaterialInventory'; end 此[SqlAgentProxy]用户是我在域用户登录名[msdb]中创建的Windows用户,我已向其授予execute此UpdateMaterialInventory过程的权限。这避免了必须向域用户execute授予msdb.dbo.sp_start_job过多的权限。 SQL Agent作业NDS-ManualMaterialInventory由域用户拥有,并具有2个步骤,每个步骤的类型为[SQL Server …

5
什么是可视化SQL Agent作业的好工具?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 4年前关闭。 我发现用于管理代理作业的内置MS SQL Studio工具有些令人沮丧。您发现哪些工具有用? 副手,我想在这种工具中看到三件事: 有关哪些作业何时运行,持续多长时间以及是否成功的图形摘要。 当前状态视图,如“作业活动监视器”,但几乎实时刷新。 用于复制或修改作业的更方便的界面(例如,比较两个作业步骤而不会被模态对话框阻止)。 编写一个小应用程序来处理此问题可能很简单,但是肯定有人已经做到了,并且做得更好。 这显然是一个主观的问题,因此,如果某种mod徘徊不前,请随时将其设为CW。

4
我正在使用SQL Server代理计划甚至非数据库任务-这是一个坏主意吗?
由于我是DBA(在许多情况下,事实上是sysadmin),因此SQL Server几乎安装在我必须定期使用的每台服务器上。最近我意识到,在几乎每种情况下,我都一直在使用SQL Agent作为作业调度程序,而不是使用本机Windows Task Scheduler。 在我看来,与本地Windows Task Scheduler相比,SQL Agent具有许多优点: (从我的工作站)远程启动/停止/监视任务 共享时间表(而不是每个任务自己执行) 多个步骤和控制流程 不同类型的任务 失败/完成警报 可以配置为充当不同的用户 (适度)描述性错误消息,而不仅仅是错误代码 但是,我无法避免这种做法不好的感觉-尽管我不喜欢SQL代理的可用性,但应该仅将SQL Agent保留给与数据库相关的任务,并且应该让Windows任务计划程序中运行OS级别的任务。 以这种方式依赖SQL Agent可以吗?如果没有,我是否应该考虑使用第三方Windows任务计划程序来获得我正在寻找的某些功能?

2
SQL Agent如何以及何时更新next_run_date / next_run_time值?
我一直在研究T-SQL中的代码,以便使用msdb数据库中的sp_add_jobschedule proc将新日程表添加到SQL Agent作业中。当我添加新计划(通常在特定日期/时间运行一次)并立即查看sysjobschedules和sysschedules中的值时,我可以看到已添加新计划并将其绑定到SQL Agent的job_id工作。但是,next_run_date和next_run_time的值中有0。当我回来在2或3分钟内再次查看它们时,它们中仍然显示0。但是,当我在5或10分钟后再回来时,它现在可以正确显示与下一次计划运行相对应的日期和时间值。 所以我的问题是: 这些值多久更新一次? 更新这些值的过程是什么? 如果我要添加一个计划,例如未来1分钟,那么这是否意味着作业尚未运行,因为next_run_date / time还没有更新? 我用于添加新时间表的代码示例: exec msdb.dbo.sp_add_jobschedule @job_id = @jobID , @name = @JobName , @enabled = 1 , @freq_type = 1 , @freq_interval = 0 , @freq_subday_type = 0 , @freq_subday_interval = 0 , @freq_relative_interval = 0 , @freq_recurrence_factor = 0 , @active_start_date …


1
具有Advanced Services的SQL Server 2014 Express是否实际上支持全文搜索?
我已经安装了具有高级服务的SQL Server 2014 Express版。我希望尝试全文搜索功能。我在这里阅读到,2014 Express Edition支持全文本搜索。但是,在安装并尝试创建全文索引后,出现错误,指出此版本的sql server不支持全文索引。 实际是否支持全文索引?我是否有可能安装了错误的版本(不是高级服务)?为了确定,我已经卸载并重新安装了两次,但是两次都相同。我很肯定我正在使用高级服务安装程序进行安装。 我使用的是Windows 7(64位)。

2
SQL Job步骤作为其他SQL帐户运行
我很好奇如何设置要作为其他SQL登录帐户执行的SQL作业步骤。看来我需要设置一个需要现有凭据的新代理帐户。创建凭据时,我唯一的选择是使用Windows登录凭据。 我尝试运行的作业如下。还有其他一些语句,但是当我将作业步骤设置为以SQL登录名运行时,它将失败。 insert into [dbo].[TableA] SELECT ss.[Ref_ID] ,mm.[studentID] ,mm.[studentPersonID] ,mm.[studentFirstname] FROM [dbo].[TableB] mm left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID where ss.Ref_ID is not null; 通过SQL作业步骤运行此命令时,它将失败。 Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE …

2
从一个主作业顺序调用多个SQL Server Agent作业的好方法?
我有几个应顺序运行的SQL Server代理作业。为使应执行的作业保持良好的概览,我创建了一个主作业,该主作业通过调用来调用其他作业EXEC msdb.dbo.sp_start_job N'TEST1'。在sp_start_job瞬间完成(作业步骤1),但我想我的主要工作要等到工作TEST1已经调用下一个工作之前完成。 因此,我编写了这个小脚本,该脚本在作业被调用后立即开始执行(作业步骤2),并迫使主作业等待子作业完成: WHILE 1 = 1 BEGIN WAITFOR DELAY '00:05:00.000'; SELECT * INTO #jobs FROM OPENROWSET('SQLNCLI', 'Server=TESTSERVER;Trusted_Connection=yes;', 'EXEC msdb.dbo.sp_help_job @job_name = N''TEST1'', @execution_status = 0, @job_aspect = N''JOB'''); IF NOT (EXISTS (SELECT top 1 * FROM #jobs)) BEGIN BREAK END; DROP TABLE #jobs; END; 这足够好用。但是我觉得WHILE 1 = …

2
作业类别中的任何作业失败时发出警报
是否可以在SQL Server 2008中设置警报,以便在特定类别的作业失败时将发送电子邮件? 我想知道是因为我想在SSRS订阅失败时设置一封电子邮件,并且所有这些订阅都是Report Server类别中的作业。 编辑 -事实证明,当SSRS订阅失败时,作业本身不会失败,因此我的问题将不适用于SSRS订阅监视。但是我仍然想知道我们在环境中运行的其他工作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.