是否可以在不使用Integration Services的情况下导出维护计划?


12

我正在尝试从SQL Server实例导出简单的维护计划。

我想检查导出到源代码管理中,并将导出的维护计划应用于功能相同的实例。

StackOverflowSQL Server新手建议使用Integration Services导出维护计划。

当我尝试连接到导出目标上的Integration Services时,出现以下错误:

连接到“ WEBSERVER”计算机上的Integration Services服务失败,出现以下错误:指定的服务不存在为已安装的服务。

我们选择在WEBSERVER上禁用Integration Services,因为我们仅使用此框将数据提供给使用者应用程序。WEBSERVER上的所有数据都是从后端实例复制的。Integration Services被大量用于处理后端实例上的数据。

有没有书面记录的方式可以在不使用Integration Services的情况下导出维护计划?微软支持吗?

Answers:


10

维护计划与存储在SQL Server中的任何其他SSIS包一样,存储在msdb.dbo.sysssis包中。我有一篇关于MSDB的SSIS包摘录的便捷文章,应该可以解决您的问题。


这仅在您完全安装了SSIS的情况下才有效,因为dtutil-它是完全构建的-否则,即使存在,也基本上被禁用。即使维护计划实际上使用了SSIS的几乎所有功能,某些版本的SQL Server(例如Web Edition)也不允许完全安装SSIS。(但是,假设您有两个版本的SQL Server,但有一个解决方法,假设其中一个版本没有受到限制-请参阅下面的答案。)
MikeBeaton 2015年

3

有一种方法可以做到这一点。

假定像OP一样,您有两个SQL Server实例,其中一个实例安装了SSIS,而另一个实例没有安装(可能没有,例如,如果是SQL Server Web Edition,则可能没有)。

编写一个存储过程,将用户维护计划行从停滞的服务器复制到停滞的服务器。相关行是:

SELECT name 
FROM msdb.dbo.sysssispackages 
WHERE packagetype = 6

您可能需要编写此SP,以便它删除所有具有匹配id首的,然后插入最新版本(或类似的方法,例如UPDATE匹配ids,然后INSERT缺失ids)。而且,您将需要在一侧或另一侧设置一个链接服务器,以便您可以编写针对这两个服务器的SQL。

就是这样,实际上,您可以定期从维护计划中调用此程序,例如,将所有维护计划备份在正常的一侧。

当然,这是一个巨大的破解,但实际上是可行的。(我想对于数据库中的数据,SQL Server的版本号在两侧要相同是非常重要的msdb.dbo.sysssispackages不同的服务器实例之间应具有实际的兼容性。)

当然,您总是可以直接直接从SSIS数据库表中备份相关行。无论如何,这都是可行的-作为原始问题的完整答案。如前所述,这与SSIS的预设无关-它只是维护计划的预设!

因此,这是一种受支持的轻量级方法,该方法无需在系统中的任何位置使用SSIS即可工作。上面更复杂,更hacky的方法的优点在于,它以标准格式提供导出的计划,而不仅仅是裸数据行。因此,我认为以后很有可能将其导入到其他版本的SQL Server中。


1

我一直在努力寻找完全相同的问题。这是主要的收获:

您的WEBSERVER上不需要集成服务。一种记录的方法是使用DTUTIL。只需使用安装了Integration Services的ANY SQL Server(甚至是具有所有Enterprise功能的免费开发人员版本),即可将SQL Server维护程序包从源复制到目标-即使它不是程序包的源或目标,如图所示。示例A

示例A: 运行DTUTIL上的SQL Server MySSISServerA从复制SQL维护包MySourceServerBMyDestServerC

DTUTIL /SQL "Maintenance Plans\Nightly Maintenance" /copy  sql;"Maintenance Plans\Nightly Maintenance" /sourceserver MySourceServerB /destserver MyDestServerC /Q

注意:ANY=相同版本,否则DTUTIL会将计划升级到vCurrent
billinkc

好点!但是升级对于我们无论如何都可以有所帮助。我喜欢做的是建立在2008年SQL计划和复制/升级这些计划到2008年SQL,2008 R2,2012,2014,2016年
斯汀

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.