了解Integration Services上的存储包

时间:2012-06-28 08:26:30

标签: sql-server ssis

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

现在我正在尝试了解Integration Services的存储包的实际使用和工作方式。这可能是有充分理由的 - 但我还没有得到它(阅读几个SSIS主题没有帮助。)

如果我打开Integration Services并将现有包添加到存储包中的MSDB文件夹,则会将其添加到我的SQL Server实例的msdb系统数据库中。然后,我可以从sysssispackagessysssispackagefolders查询其中的一些信息,然后直接运行该包。

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

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

  1. 使用Integration Services存储的原因是什么 软件包除了将它们保存为服务器上的文件外?
  2. 将包添加到“文件系统”或时,会发生什么 Integration Services'Stored Packages'文件夹中的'MSDB'文件夹? 有什么好处?
  3. 非常感谢任何指针/见解!

4 个答案:

答案 0 :(得分:5)

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

文件系统

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

SQL Server

  • 多个人更容易访问
  • 数据库安全性,角色和代理交互的好处
  • 使用正常的数据库备份过程备份软件包
  • DBA通常更容易管理(他可以根据更改等控制包的内容。)

关于第二个问题,包是SSIS可以读取和执行的XML文件。在基于文件的部署中,SSIS在文件系统上定位程序包并执行它,在数据库部署中,SSIS将程序包定位在MSDB表上并执行它。在性能方面没有差异。

答案 1 :(得分:2)

  1. 备份。如果软件包位于msdb数据库上,则在备份数据库时,将备份软件包。他们还可以利用SQL Server的安全性,而不仅仅是在文件系统上。

  2. 优点是您不必担心文件路径,或者有人会删除文件或将文件夹移动到其他位置。包裹将始终位于“同一地点”。

答案 2 :(得分:2)

好的,所以我误解了很多SSIS包存储和保存包。这是我学到的。首先,“您可以通过SSMS中的”连接“按钮(Connect - > Integration Services ...)连接的东西称为 SSIS包存储

将软件包添加到Integration Services的“存储软件包”文件夹中的“文件系统”或“MSDB”文件夹时会发生什么?有什么好处?

文件系统

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

编辑包很简单:在文件系统目录中打开包,编辑并保存,新版本将立即通过SSIS包存储提供。

优点:

  • 轻松部署和排除软件包
  • 数据库引擎关闭时仍可使用包

SQL Server / MSDB

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

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

优点:

  • 可以通过数据库安全性严格配置程序包的安全性
  • 将在备份msdb数据库时备份软件包
  • 包裹存储在中央位置

除了将软件包保存为服务器上的文件外,使用Integration Services存储软件包的原因是什么?

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

感谢João LealDiego的回答!

答案 3 :(得分:2)

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

  

文件系统:

     

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

     

SQL Server:

     

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

     

SSIS包裹商店:

     

此选项实际上不是部署的真正选项。为什么?因为   这只是一个重定向步骤。我的意思是,如果你选择   当您尝试保存包的副本时BIDS中的此选项...,   你会看到一棵树有父母“SSIS包”和两个孩子:   “MSDB”和“文件系统”。如果你选择“MSDB”包将   保存在msdb数据库下与sql server选项相同(上一个   选项描述)。如果你选择“文件系统”,ssis   package将存储为扩展名为.dtsx但在a中的物理文件   此地址中的文件夹:\ Microsoft SQL   Server \ 100 \ DTS \ Packages。这就像文件系统选项,但你可以   不在任何地方存放包裹,你可以将它存放在一个地方   预定义的物理位置,当然您可以创建子文件夹   那里,但你不能越过父母保存包任何其他   比预定义的地方。