gpt4 book ai didi

sql-server - SSIS 包存储与 MSDB

转载 作者:行者123 更新时间:2023-12-02 18:28:41 25 4
gpt4 key购买 nike

设置 SQL 代理作业时,可以选择“SQL Server”或“SSIS 包存储”等选项。如果我选择“SSIS 包存储”并浏览到 MSDB 而不是文件系统,我可以选择存储在 sysssispackages 中的 SSIS 包。

但是,SSMS 在选择 SSIS 包存储时自动选择的/DTS 开关的文档似乎仅适用于存储在文件系统上的包。

我还注意到,如果执行作业的用户没有文件系统权限,则在选择 SSIS Package Store --> MSDB --> Package 时作业将会失败,并出现“访问被拒绝”错误或“~对象不存在”。既然文件系统上不存在该包,为什么在选择 SQL Server 时执行正常,而在使用 SSIS 包存储时执行失败?即使选择了 MSDB,dtexec 是否确实在文件系统上查找 dtsx 文件?我认为 SQL Server 和 SSIS 包存储 --> MSDB 在引用运行代理的服务器时是同一件事,这可能是错误的。

我做了一些研究,但在从 MSDB 文件夹中进行选择时,我无法找到使用 SQL Server 和 SSIS 包存储之间的明显区别(如果有的话)。

有人可以阐明这些差异吗?

最佳答案

有 2 个位置可以存储 SSIS 包:文件系统或 SQL Server。剩下的就是语义。

文件系统

您可以使用 SSIS 包存储,它只是安装位置中众所周知的位置。

%Program Files%\Microsoft SQL Server\{Version}\DTS\Packages

或者您可以选择文件系统上您喜欢的任何位置。如果您采用此方法,则需要确保 SQL 代理帐户或有凭据的代理,或者,如果您从 xp_cmdshell 运行包,则 SQL Server 服务帐户有权访问该位置。

如果您想这样调用它,使用包存储(即我提到的文件夹)的唯一优点是您可以使用 SSMS 中存在的 Integration Services 管理工具(通过连接到 Integration Services 而不是数据库引擎) )。

enter image description here

但是,这有很多缺陷,例如无法处理多个实例、程序包仅在 64 位模式下运行、无法访问代理帐户等。无论如何,您都不应该从 SSMS 运行程序包。

SQL 服务器

如果内存正确

  • 2005 - 存储在 msdb.dbo.sysdtspackages90
  • 2008 - 存储在 msdb.dbo.sysssispackages 中(我似乎记得 2008 RTM 使用不同的表,或者重用了 90 表,但已修补)
  • 2008 R2 - 存储在 msdb.dbo.sysssispackages
  • 2012(程序包部署模型)- 存储在 msdb.dbo.sysssispackages 中
  • 2012(项目部署模型)- 存储在 SSISDB.catalog.packages*
  • 2014(程序包部署模型)- 存储在 msdb.dbo.sysssispackages 中
  • 2014(项目部署模型)- 存储在 SSISDB.catalog.packages*

*使用项目部署模型,包被“编译”(与 list 一起压缩)到 .ispac 中,该 .ispac 存储在 SSISDB.internals.* 表的内部。

总结

最终,您存储包的位置不会影响您运行它们的能力。您可以使用 DTEXEC、SQL Agent 或自定义 .NET 代码运行包。存储包的选择主要取决于您的管理风格。

引用文献

关于sql-server - SSIS 包存储与 MSDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com