4

我们有几个 SSIS 包(在一个解决方案中)保存在服务器上的一个目录中。这些包通过 SQL Server 代理作业运行,使用“文件系统”作为包源。包不会以任何方式添加到“集成服务”(您可以通过 SSMS 中的“连接”按钮连接的东西)。这似乎工作正常。

现在我正在尝试了解 Integration Services 的Stored Packages的实际用途和工作原理。它可能有一个很好的理由 - 但我还没有得到它(阅读几个SSIS主题没有帮助)。

如果我打开集成服务并将现有包添加到存储包中的 MSDB 文件夹,它会添加到我的 SQL Server 实例的 msdb 系统数据库中。sysssispackages然后我可以从or中查询一些关于它的信息sysssispackagefolders,并直接运行包。

如果我将现有包添加到存储包中的文件系统文件夹,似乎什么都没有发生,除了它还允许我通过右键单击并选择“运行包”来运行它。

我觉得我在这里错过了重要的东西。我的问题如下:

  1. 除了将它们保存为服务器上的文件之外,还有什么原因使用集成服务来存储包?
  2. 将包添加到 Integration Services 'Stored Packages' 文件夹中的 'File System' 或 'MSDB' 文件夹时究竟会发生什么?有什么好处?

非常感谢任何指针/见解!

4

4 回答 4

5

以下是数据库存储包与文件系统存储包的一些优点/缺点:

文件系统

  • 基于操作系统的文件加密和 ACL
  • 更容易直接访问以查看或编辑包
  • 通常对开发者来说更​​容易管理(更改一个包,只需替换文件)

SQL 服务器

  • 多人更容易访问
  • 数据库安全、角色和代理交互的好处
  • 包通过正常的数据库备份过程进行备份
  • DBA 通常更容易管理(他将控制包在更改等方面发生的情况等。)

关于第二个问题,包是 SSIS 可以读取和执行的 XML 文件。在基于文件的部署中,SSIS 在文件系统上找到包并执行它,在 DB 部署中,SSIS 在 MSDB 表上找到包并执行它。在性能方面没有任何差异。

于 2012-06-28T08:48:10.347 回答
2
  1. 备份。如果包位于 msdb 数据库中,则在备份数据库时,您将备份包。他们还可以利用 SQL Server 的安全性,而不仅仅是在文件系统上。

  2. 好处是您不必担心文件路径,或者有人会删除文件或将文件夹移动到另一个位置。包裹将永远在“同一个地方”。

于 2012-06-28T08:46:58.907 回答
2

这个更好地解释了差异 social.msdn.microsoft.com

文件系统:

我确定您确切知道 FileSystem 选项是什么,但要完成本部分:您可以使用此选项将包保存在硬盘驱动器或任何共享文件夹的物理位置,并且您应该提供存储包的完整路径在文件系统选项中。

SQL 服务器:

使用此选项,SSIS 包将存储在 msdb 数据库的 sysssispackages 表中。您可以将它们分隔在您想要的任何文件夹中。这些文件夹是虚拟文件夹,列在 sysssispackagefolders 表中。因此使用此选项 ssis 包将不会存储为物理文件。它将存储在 msdb 数据库中。

SSIS 包商店:

此选项实际上并不是真正的部署选项。为什么?因为这只是一个重定向步骤。我的意思是,如果您在尝试保存包的副本时在 BIDS 中选择此选项...,您将看到一棵树,其中包含父“SSIS 包”和两个子:“MSDB”和“文件系统” . 如果您选择“MSDB”,该包将保存在 msdb 数据库下,与 sql server 选项(之前描述的选项)相同。如果您选择“文件系统”,则 ssis 包将存储为扩展名为 .dtsx 的物理文件,但在此地址的文件夹中: \Microsoft SQL Server\100\DTS\Packages 。这就像文件系统选项,但您不能在任何位置存储包,

于 2013-02-04T10:21:06.010 回答
2

好的,所以我对 SSIS 包商店和保存包有很多误解。这是我学到的。首先,“您可以通过 SSMS 中的“连接”按钮连接的东西”(连接 -> 集成服务...)称为SSIS 包商店

将包添加到 Integration Services 'Stored Packages' 文件夹中的 'File System' 或 'MSDB' 文件夹时究竟会发生什么?有什么好处?

文件系统

如果要使用 SSIS 包存储中的文件系统文件夹,请将包保存到默认文件系统目录 ( ...\Microsoft SQL Server\100\DTS\Packages) 或将文件系统的根文件夹更改为要使用的目录。(您可以通过更改 MsDtsSrvr.ini.xml 文件中的默认值来更改根目录<StorePath>..\Packages</StorePath>,该文件可以在...\Microsoft SQL Server\100\DTS\Binn目录中找到。完成后不要忘记重新启动 Integration Services 服务。)当您添加打包到此目录,它将出现在 SSIS 包存储的文件系统文件夹中。然后,您可以直接从 SSIS 包存储或通过 SQL Server 代理作业运行包(通过在作业步骤属性中选择 SSIS 包存储作为包源,然后选择包)。

编辑包很容易:打开文件系统目录中的包,编辑并保存,新版本将立即通过 SSIS 包商店提供。

优点:

  • 软件包的部署和故障排除很容易
  • 当数据库引擎关闭时,包仍然可用

SQL Server/MSDB

如果你想依赖msdb数据库来保存你的包,你必须通过 SSIS 包存储将每个包导入 msdb。右键单击 MSDB 文件夹并选择导入包。这会将包保存到 msdb 数据库。之后您无需保存原始 .dtsx 包文件。

编辑包有点困难:您必须导出包,编辑它并在 SSIS 包商店中再次导入包。或者您可以在 BIDS 中打开一个新项目,通过右键单击 SSIS 包并选择从 SQL Server 中添加现有包来添加包,对其进行编辑,然后在 SSIS 包存储中再次导入包。

优点:

  • 包的安全性可以通过数据库安全性进行严格配置
  • 备份 msdb 数据库时将备份包
  • 包裹存放在中央位置

除了将它们保存为服务器上的文件之外,还有什么原因使用集成服务来存储包?

那么,为什么要向 SSIS 包存储中添加一个包,而不是像我们一样通过直接从“作业步骤属性”窗口引用 package.dtsx 文件来运行它)?这取决于:如果您希望您的包在 msdb 数据库中,您需要Package Store,因为没有其他方法可以维护您的包。如果您使用文件系统,可能是您有一个单独的“开发”和“部署”目录,所有准备好部署的包都可以通过 SSIS 包存储找到。在每种情况下,SSIS 包商店都为您的包提供了一个简单的界面。

感谢João LealDiego的回答!

于 2012-06-29T13:38:12.247 回答