【问题标题】:Using SQL command in OLEDB destination在 OLEDB 目标中使用 SQL 命令
【发布时间】:2018-12-07 14:05:13
【问题描述】:

任何人都可以建议,在 SSIS 的 OLEDB 目标中使用 SQL 命令访问模式是最佳实践/建议吗?? 这种访问模式的优缺点是什么。 提前致谢。

【问题讨论】:

标签: ssis sql-server-data-tools


【解决方案1】:

与使用 SQL 命令相比,使用 Table or view - fast load 选项更有可能获得更好的性能。默认情况下,使用 SQL 命令不会利用与快速加载选项相同的功能。通过使用快速加载,这将在内部作为BULK INSERT 工作。此选项还获得独占 (X) 页锁和意图独占 (IX) 表锁,而 SQL 命令选项将仅对各自的对象采用共享 (S) 和架构稳定性 (Sch-S) 锁.您可以通过sys.dm_tran_locks 或扩展事件(例如lock_acquired 事件)查看这些锁来确认。如果您使用的是扩展事件,为了让您的事务在执行此操作时更容易区分,请在连接字符串中设置 Application Name 属性并查找它。 X 表锁将阻止其他人在此操作期间访问表,并且在考虑这两个选项时,您需要权衡潜在的阻塞。

如果您的目标是 SQL Server 表或视图,建议使用 SQL Server 目标。但是,此选项仅用于加载到 本地 目的地,并且在规划长期开发时需要考虑此限制。因此,如果您当前的目的地是本地的,但几年后这可能会改变,那么 OLE DB 目的地将是更好的选择。与 OLE DB 目标的快速加载选项类似,这将利用 BULK INSERT 功能,但是 SQL Server 目标具有在加载目标表之前对列数据应用转换的优势。 SQL Server 目标可以通过将BulkInsertTabLock 设置为false 来避免OLE DB 目标的表锁定。我发现使用 SQL Server 目标往往比 OLE DB 目标执行得更好,但是您应该使用测试环境来验证这一点,该测试环境专门模拟何时执行该过程并自行评估结果。目的地类型的 MSDN 参考如下。

OLE DB Destination

SQL Server Destination

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多