标签: maintenance-plans

如何指定 SQL Server 维护计划子任务在前面任务成功或失败时无条件运行?

我正在使用 SQL Server Management Studio 维护计划向导创建(相当标准的)每日维护计划。

在此处输入图片说明

AFAIU,倒数第二个任务“备份数据库任务”只有在所有前面的任务都成功时才会执行。由于约束(包含任务的箭头)都是相同的(取自默认选项创建):

在此处输入图片说明

并使用“逻辑与”

现在,如果我在前面的约束中将“逻辑与”更改为“逻辑或”,如果前面的任务之一失败,备份任务仍然会失败。
正确的?

在任何情况下如何使备份任务运行?

更新
接受答案后,我仍然对术语“完成”存有疑问:
在 SQL Server 维护计划术语中,是否认为失败的任务已完成?

sql-server ssis maintenance-plans

5
推荐指数
2
解决办法
4776
查看次数

在多租户环境中部署 SQL Server 备份维护计划

我们有一个多租户环境,我一直在尝试在所有服务器上部署标准化的维护计划。我一直在遇到正确导入维护计划的问题,以及设置正确的最小权限来运行作业的问题。

任何人都可以就如何在异构多租户环境(例如我们的环境)中部署此类备份维护计划提供一些指导。我在下面详细介绍了我的尝试,鉴于复杂程度正在迅速上升,我想知道我是否正朝着完全不正确的方向前进。

有没有更好的办法?

我正在寻找一种可以通过脚本/SQLCMD 轻松部署的解决方案,因此我可以通过 Puppet 推出它。我也希望坚持维护计划,因为我们团队中的 SQL 知识很少,并且未来对备份计划的编辑需要深入的 T-SQL 知识将是有问题的(尽管它看起来像一个 T-SQL 脚本或为了运行备份可能是最简单的方法)。

环境

  • 现在我们主要运行 Windows 2008 R2 和 SQL Server 2008 R2 Standard
  • 但是,支持 Windows 2012 和 SQL Server 2012/2014 的解决方案将是目标
  • 我们为多个客户支持许多 SQL Server,所有这些都是隔离的。
  • 一些客户在他们自己的 Active Directory 林中运行,而其他客户则运行没有 AD 的独立 SQL Server。因此,在 AD 身份验证方面没有共同因素。
  • 所有客户都被隔离在他们自己的网段中,但我们可以在防火墙中打孔以进行备份。
  • 现在,我们使用 Puppet 进行跨服务器的基本配置管理。基本上,这转化为以标准方式在服务器上部署新文件、运行脚本、SQL(通过 SQLCMD)和设置权限/用户的简单能力。

我试过的

目前,我的主要尝试包括通过集成服务将我的维护计划导出到 DTSX 文件,以及作业子计划的相关 T-SQL。然后将这些导入到目标服务器中,以相同的用户名/密码运行。

一些粗略的步骤:

  1. 照常在服务器上创建维护计划。设置时间表。

  2. 在计划中配置本地服务器连接以作为我的标准化“备份”用户进行连接。

  3. 将 subplan1 作业配置为由“backup”用户拥有,并将 Subplan_1 Step 1 配置为通过相同的备份 SQL 用户进行连接。

  4. 本地连接到集成服务并将存储在 MSDB 中的维护计划导出到 DTSX 文件,指定自定义加密密码。还将 Job subplan_1 T-SQL 导出到新的 SQL 文件。

  5. 在所有数据库上授予backup …

sql-server-2008 sql-server backup maintenance-plans

5
推荐指数
1
解决办法
2327
查看次数

在不同的服务器上运行 PowerShell 脚本 - 从 SQL Server 作业内部

我有一个备份 SSAS 数据库程序

这是一种魅力。

现在我的服务器被 SSAS 备份填满,我想删除超过 2 天的备份文件。

为了实现这一点,我使用了以下 POWERSHELL 脚本:

#-------------------------------------------------------------------------------
# Script to delete old SSAS backup files
#
# Marcelo Miorelli
# 
# 19-novembre-2014 Wed
#-------------------------------------------------------------------------------


#-- connect to the remote server -- SQLBILON1
#
ENTER-PSSESSION sqlbilon1


#-- set the Path where the backup files (.abf) are located
#
$path = 'H:\SQLBackups'

#-- set the number of days backups should be deleted -- in this case 2
#
$NumberOfDays = 2

#-- …
Run Code Online (Sandbox Code Playgroud)

sql-server ssas powershell linked-server maintenance-plans

5
推荐指数
1
解决办法
4082
查看次数

备份数据库任务 - 文件名末尾的数字是多少?

当使用 SQL Server 2012 EMaintenance Plan 进行备份时,备份数据库任务会创建一个唯一的文件名。我理解格式一直到最后一组数字。

例如,通过备份数据库任务启动的完整数据库备份将创建如下文件名:

AdventureWorks_backup_2014_12_17_080005_5862824.bak

什么是5862824引用?是不是比LSN?还有什么?

sql-server backup maintenance-plans

5
推荐指数
2
解决办法
1363
查看次数

修改维护计划后自动禁用 SQL 代理作业

我昨天修改了一个维护计划,今天早上(通过使用来自 sysjobs 的最后修改日期)发现与维护计划相关的所有作业都被禁用。

我无法弄清楚为什么会这样。SQL 作业所有者是sa,我只是用维护计划更改了维护清理任务并保存了作业。

sql-server sql-server-agent maintenance-plans

5
推荐指数
1
解决办法
2025
查看次数

在维护计划期间删除其他文件

我有一个 SQL Server 2012 维护计划,它执行正常的操作(重建索引和更新统计信息、备份数据库、删除超过 X 天的 .bak 文件等)。除了一项维护清理任务外,一切正常:

维护清理任务截图

应该是删除所有意外留在每晚备份目录中的 .7z 档案(相当于 .zip 或 .rar)(尽管我们尽了最大努力,但最终还是有些人将这些文件留在服务器上......),但是E:\Backups\foo\bar.7z在维护计划运行后,子目录(例如)中仍然存在旧的 .7z 文件。

SQL Server 日志中没有错误。

我怀疑这是因为“删除以下类型的文件:备份文件”选项限制了可以删除的文件类型。我还尝试使用 7z 扩展名将其更改为“维护计划文本报告”,但没有任何更改。

是否可以让维护计划在维护清理任务期间删除任意(非 SQL Server)文件?如果是这样,知道我做错了什么吗?

backup sql-server-2012 maintenance-plans

5
推荐指数
1
解决办法
3528
查看次数

维护计划向导生成无效脚本?

我使用维护计划向导创建了一个计划。当我执行计划时,“维护清理任务”失败并显示以下错误消息:

执行查询“EXECUTE master.dbo.xp_delete_file 0,N'',N'',N'2016...”失败并出现以下错误:“执行扩展存储过程时出错:参数无效”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或者连接建立不正确。

生成的 T-SQL 是这样的(根据日志文件查看器):

EXECUTE master.dbo.xp_delete_file 0,N'''',N'''',N''2016-01-25T13:50:30''

GO
Run Code Online (Sandbox Code Playgroud)

请注意,所有单引号都加倍。

日志查看器或向导中是否存在错误实际上生成了无效的 T-SQL 代码?


刚刚意识到如果我删除重复引号并手动运行查询,我会收到“执行扩展存储过程时出错:无效参数”:

EXECUTE master.dbo.xp_delete_file 0,N'',N'',N'2016-01-25T13:50:30'

GO
Run Code Online (Sandbox Code Playgroud)

sql-server ssms maintenance-plans sql-server-2014

5
推荐指数
1
解决办法
5012
查看次数

“sp_configure 允许更新”有什么作用?

今天我收到一个错误 (DTSER_FAILURE),但我可以通过编辑维护计划来修复它(这个错误是由于维护计划搜索已删除的数据库,而我在设置中使用了“选定的数据库”)。

但是在互联网上,我读了一些帖子说我应该SP_CONFIGURE 'ALLOW UPDATES',0

这个选项有什么影响?

我在 Microsoft 页面上读到此选项无效并且已弃用。

sql-server backup maintenance-plans sql-server-2014 sp-configure

5
推荐指数
1
解决办法
4248
查看次数

单独更新所有统计数据是否会导致性能不佳?

多年来,我们一直在使用 Ola Hallengren 的维护脚本对 OLTP 数据库进行索引优化。(我们在 sql server 2008 R2 上)2 周前,尽管这里的一位 DBA 创建了一个维护作业来单独更新统计信息,并且在索引优化作业之前每周运行一次。似乎在创建它之后,我们在少数存储过程中遇到了性能问题。我对统计维护不太熟悉,所以我想知道,是否真的有必要单独运行每周工作来更新所有统计数据?
这里的 DBA 似乎认为这是必要的,但我觉得在维护作业运行后的第二天早上,我们开始执行糟糕的存储过程,我经常需要每天至少重新编译相同的存储过程 1 或 2 次,以用于以下几个几天然后问题就停止了。我的理论指向之前发生的统计更新,但我找不到原因。无论如何,在进行一定量的更改或索引重建期间,统计信息是否会更新?为什么单独重新计算它们会导致问题?

有没有人能够澄清为什么每次更新统计信息时相同的存储过程都会发生这种情况?

这是用于统计作业的命令:

EXECUTE dbo.IndexOptimize 
    @Databases = 'DB_PRO', 
    @FragmentationLow = NULL, 
    @FragmentationMedium = NULL, 
    @FragmentationHigh = NULL, 
    @UpdateStatistics = 'ALL', 
    @OnlyModifiedStatistics = 'Y' , 
    @TimeLimit = 3600, 
    @LogToTable = N'Y'; 
Run Code Online (Sandbox Code Playgroud)

然后索引维护作业运行如下:

    sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master -Q "EXECUTE [dbo].[IndexOptimize] 
    @Databases = 'DB_PRO', @TimeLimit = 10800, @LogToTable = 'Y'" -b
Run Code Online (Sandbox Code Playgroud)

performance sql-server statistics maintenance-plans query-performance

5
推荐指数
1
解决办法
1754
查看次数

在 SQL Server Express 中编写维护计划脚本

我将如何在 SQL Express 上运行 Ola Halengren 的 sql 维护计划的各个方面?

我的理解是每个作业都应该按特定顺序运行。我确信 .bat 或 cmd 文件可以做到这一点,但不确定从哪里/如何开始。SQL Express 不显示服务器代理,因此不显示作业。

我可以以另一种方式查看它们并仍然使用调度程序,还是必须编写脚本?我是否必须从任务计划程序运行它,或者 SQL 代理计划程序可以处理这个问题?非常感谢您可以提供的任何帮助/方向。

附带说明一下,我还想知道是否可以安排作业在另一个作业完成后运行,而不是指定运行作业的时间?

sql-server scripting sql-server-express maintenance-plans ola-hallengren

4
推荐指数
1
解决办法
1266
查看次数