标签: sql-server-agent

SQL Server 备份过程调优

我在一家拥有 20 个全职网站的小公司工作。以及另外 20-30 个微型站点。在 SQL Server 代理备份运行后,我们每天都遇到站点冻结的问题。当备份服务停止时,我们看不到任何问题。这是常见的吗?

我们使用的是 SQL Server 2005,并且备份在星期日和星期三运行。我还将研究数据库本身中的其他内容,但这是突出的内容。

- 编辑 - 我在 5/27 到 5/31 的机器上运行了 3 天的性能:

SQLServer:SQL Statistics\Batch Requests/sec Average 355.412275 Median 306.610812 Min 108.9369962 Max 916.6332837 Std Deviation 141.7791552

SQLServer:General Statistics\User Connections Average 83.14025501 Median 77 Min 52 Max 147 Std Deviation 19.27016231

SQLServer:Buffer Manager\Page life expectancy Average 33.72386157 Median 21 Min 0 Max 246 Std Deviation 36.53737617

看起来运行的维护备份在运行时不会引起问题。它在凌晨 3 点以及周日和周三运行,并在大约 2 小时内成功完成。我运行了 SQL Server 配置文件:

我发现其中一个定期运行的 sp 需要很长时间才能执行。

大多数情况下 Duration 为 976(微秒),但有时差异很大:13922851 …

sql-server-2005 backup sql-server-agent

6
推荐指数
1
解决办法
669
查看次数

为什么 Sql Server Agent 的 Next Run Time 值可能不是我所期望的?这绝对是我下次工作的时候吗?

有时,我发现 sysjobschedules.next_run_date 和 time 字段中的 sql server 代理值存在一些不一致。

我有一个与 sql 调度系统交互的 Web 界面。

我创建了一个测试作业,该作业于 2011 年 3 月 16 日上午 9:45 开始。我已将其设置为每 4 周在星期三发生一次。

从今天开始,这应该将下一次运行日期和时间放在 1 月 18 日 9:45,但我工作的下一次运行日期/时间值是 1 月 4 日。

作业属性中的值看起来不错。
开始日期是 2011
年3 月 16 日。频率值都是正确的。
但似乎 SQL 未能正确地发生这种情况。

以下是 sp_help_jobschedule proc 中有关作业的一些相关信息

freq_type 8
freq_interval的 8
的freq_subday_type 1
freq_subday_interval 1
freq_relative_interval 0
freq_recurrence_factor 4
active_start_date的 20110316
active_end_date的99991231
active_start_time 154500
active_end_time 55959
DATE_CREATED 2011-12-29 20:37:05.737
schedule_description 周三每4周(或多个)在154500
next_run_date 20120104
next_run_time 154500

如果开始日期是 2011 年 …

sql-server sql-server-agent

6
推荐指数
1
解决办法
1万
查看次数

带有自定义消息的 Sql Server 代理通知电子邮件

我已设置完成预定作业的电子邮件通知。

是否可以自定义电子邮件内容?

sql-server sql-server-agent

6
推荐指数
1
解决办法
6187
查看次数

SQL 服务器代理 SSIS 错误

当我将我的包作为 SQL 服务器代理作业执行时,出现以下错误。

它是在 SQL Server 2008 实例上运行的 SSIS 2008 包。我的包裹安全性是 DontSaveSensitive。

我什至不知道如何开始修复这个错误。

我应该先去哪里检查?

Date        a value of time
Log     Job History (MyJob)

Step ID     1
Server      PCTSQL004
Job Name        MyJob
Step Name       Job_1
Duration        00:00:00
Sql Severity        0
Sql Message ID      0
Operator Emailed        
Operator Net sent       
Operator Paged      
Retries Attempted       0

Message
Executed as user: CS\DmcSysManager. The process could not be created for step 1 of job 0x63BB5A86DB23F947866D2A806BE4CC6B (reason: A required privilege is not held by the client). …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server ssis sql-server-agent

6
推荐指数
1
解决办法
2379
查看次数

SQL Server - SQL 代理 - 允许组拥有作业

设想

我们的组织中有三个独立的用户组(开发、支持、实施)。就目前情况而言,每个人都使用一次登录来完成所有事情。我们正开始摆脱这种情况。每个人都通过自己的登录名访问数据库,每个人都可以访问其组系统。因此,支持人员可以访问支持职能和工作等。

过程和表的允许权限非常简单。从 windows 组创建登录名。然后根据该登录创建一个用户,并允许它在我们为他们创建的新架构上读取和执行。

我们正在运行 SQL Server 2012 和 2008 R2。

问题

SQL 代理作业位于用户级别之上,需要将登录名分配给所有者。但它不接受组登录作为接受的参数:

指定@owner_login_name无效(有效值由sp_helplogins[不包括Windows NT 组]返回)。

希望允许这些组拥有自己的一组可以直接操作的作业(在报告服务器上而不是实时数据库上)。不影响其他部门的工作或其他工作(数据库维护任务、复制等)。但如果原始作者不在办公室或已经离开,则允许团队的其他成员操纵工作。

我尝试过四处搜索,但到目前为止,我在 2010 年在sqlservercentral.com上发现的唯一一件事说这是无法完成的。

我正在看的东西

将 SQL 代理作业分配给无人有权访问的支持/开发通用帐户。但每个人都可以以某种方式操纵自己的工作。

这将允许人们改变团队的工作,同时允许个人离开公司后继续使用工作。

我还没有找到一种方法让人们能够通过其他所有者访问/运行作业(即使他们使用相同的 Windows 组登录到 sql)。不授予他们SQLAgentOperateorRole (这会破坏将他们锁定在外的意义)彼此(和管理员)的工作。

每个组创建一个用户,该用户具有 msdb 权限的附加访问权限以及他们可以登录以操作作业的标准支持功能。

这样做的缺点是现在用户有两个登录名,其中之一不会改变。因此,离开公司的用户仍然可能拥有该帐户的登录凭据,这也会导致用户变得懒惰,只在该帐户下登录。(他们不应该这样做,但说实话,他们会的)。

每个组都有一个每 5 分钟运行一次的 SQL 作业,其中包含一个表,其中包含用于以频率 x 运行此命令的命令(本质上一个 SQL 代理作业运行自定义编写的 SQL 代理作业列表)

我认为我不需要经历这是一个多么可怕的想法。但这是已经半考虑过的事情。

概述

显然,我们可以看到的最佳解决方案是允许一个组拥有 SQL 代理作业,但似乎这是不可能的。

有人有主意吗?目前,我们将不胜感激有关如何实施此类事情的指导。

permissions sql-server-2008-r2 sql-server-2012 sql-server-agent

6
推荐指数
1
解决办法
1万
查看次数

sql server 代理作业的最小权限原则

我刚刚阅读了这篇文章,该文章提倡使用 sa 帐户来获得 sql server 代理作业的所有权。

http://sqlmag.com/blog/sql-server-tip-assign-ownership-jobs-sysadmin-account

他有一些警告,但没有提供更多细节。

他确实说了以下几点:

...在需要考虑安全性并且最小权限有意义的情况下(例如备份、一致性检查、索引碎片整理等以外的作业),那么您需要查看并利用 SQL Server 代理.

我的问题是 - 为什么最小权限对备份、一致性检查、索引碎片整理等没有意义?可以忽略最小特权时的经验法则是什么?

sql-server best-practices permissions sql-server-agent

6
推荐指数
1
解决办法
534
查看次数

“ActiveX Scripting”步骤类型是否已从 SQL Server 2016 中秘密删除?

将我们的数据库从 SQL Server 2012 迁移到 2016,我们无法重新创建涉及用 VBScript 编写的 ActiveX 脚本步骤的 SQL 代理作业。

错误消息表明这'ACTIVESCRIPTING'不是 的@subsystem参数的允许值sp_add_jobstep

我知道 ActiveX 脚本被标记为“将在SQL Server未来版本中删除”。但是,我看不到在版本的 SQL Server 中实际删除了有关它的任何内容。

SQL Server 文档似乎表明它在 SQL Server 2016 中仍然可用:

@subsystem ='ACTIVESCRIPTING'事实上,在一个未公开的方式偷偷取走,还是我们错过了一个可安装组件,支持呢?

scripting sql-server-agent jobs sql-server-2016

6
推荐指数
1
解决办法
2778
查看次数

SQL 代理 PowerShell 语法错误

我正在尝试在 SQL 代理作业 (SQL Server 2016) 中设置 PowerShell 脚本。我正在使用第三方模块 DBATOOLS.psd1,它似乎是我遇到语法错误的地方。目前我的 SQL 作业有一行代码失败:

Import-Module e:\dbatools-master\dbatools-master\dbatools.psd1
Run Code Online (Sandbox Code Playgroud)

为什么作业失败并出现以下错误?当我通过 PowerShell ISE 运行它时,此命令工作正常。

Error Message: Unable to start execution of step 1 (reason: line(5): Syntax error).  The step failed.
Run Code Online (Sandbox Code Playgroud)

sql-server powershell sql-server-agent sql-server-2016 dbatools

6
推荐指数
1
解决办法
1835
查看次数

SQL Server 警报未向操作员发送通知电子邮件

我设置了几个 SQL Server 警报并添加了 Operator 来通知是否发生任何警报。

我只是注意到确实发生了几个警报,但我们没有收到任何警报电子邮件。我确实向操作员发送了一封测试通知电子邮件,它工作正常,我们收到了电子邮件。

知道为什么在实际警报发生时我们没有收到电子邮件警报吗?

数据库邮件日志中没有任何内容。

SQL Server 是可用性组的一部分,我只在操作员中提供电子邮件名称,而不提供任何“网络发送地址”或“寻呼机电子邮件名称”。此外,所有警报都列在操作员的属性中。

警报历史记录“发生次数:266”,上次警报的日期是昨天 6 月 29 日,但我根本没有收到警报电子邮件。甚至运营商历史也没有任何历史(从未通过电子邮件发送)。

sql-server sql-server-agent database-mail alerts sql-server-2016

6
推荐指数
1
解决办法
4483
查看次数

手动运行作业时关闭按钮操作

我在我的笔记本电脑上使用右键单击 > 在步骤开始工作从 SSMS 开始了一项工作......当我准备好完成当天的工作时,该工作仍在运行,所以我选择关闭,认为它正在服务器上运行,并会继续服务器。

今天我找不到那个运行的工作,所以我第二次猜测这个弹出窗口是如何运行的(下面有问题的弹出窗口的屏幕截图)。

单击关闭按钮时会发生什么?如果作业被终止,它究竟是如何终止的(例如某些可捕获的东西;有问题的作业是在代理帐户下运行的操作系统类型)。

包含有问题的关闭按钮的弹出窗口

sql-server sql-server-agent sql-server-2016

6
推荐指数
1
解决办法
695
查看次数