3

我有一个服务器托管许多不同的数据库,它们都具有相同的结构,以及一个 SSIS 包库,其中一些在客户端数据库中是通用的,而另一些则是特定于客户端的。

我知道您可以将包存储在 MSDB 中,但这是跨整个 SQL 实例的共享存储 - 是否可以将包附加到特定数据库?

4

1 回答 1

3

实际上,当您将包存储到 msdb 中时,它们存储在特定实例的 msdb 中。在您的所有实例上运行SELECT * FROM dbo.sysdtspackages90(2005) 或SELECT * FROM dbo.sysssispackages(2008),您将确定哪个当前正在托管您的包。如果您使用的是文件夹,我可以使用这些查询的更高级版本。

我相信您正在观察的是工具的工件。SQL Server Integration Services服务只有一个实例。此服务不会阻止您在特定实例中存储包,它只会让这样做变得更复杂一些。或者如我所见,通过放弃 GUI (SSMS),您可以摆脱非自动化管理的束缚。

如何将包推送到其他命名实例中?您可以按照上述链接中的说明编辑服务的 .ini 文件,然后重新连接到 SSMS 中的 Integration Services 事物,或者使用命令行或查询方法来管理您的包。我们在以前的商店中成功使用了 SSISDeployManifest 来处理部署。有一个与 .ssisDeploymentManifest 关联的 GUI,您可以使用它来处理您的部署,或者欢迎您使用 .NET 对象模型来处理部署。我对我的PowerShell SSIS 部署和维护很满意,但你的里程因人而异。

最后给出一个命令行部署的具体示例,下面将部署一个名为 MyPackage.dtsx 的包,它位于 C 的根目录中,并将其部署到当前机器上的命名实例中,并将它们部署到 MSDB 的根目录中。

dtutil.exe /file "C:\MyPackage.dtsx" /DestServer .\Dev2008 /COPY SQL;"MyPackage"
dtutil.exe /file "C:\MyPackage.dtsx" /DestServer .\Test2008 /COPY SQL;"MyPackage"

我有一个早期版本的 PowerShell 脚本,用于生成对 dtexec 的调用,而不是直接使用对象库。

如果您还有其他问题,请告诉我

于 2013-07-17T13:01:19.240 回答