Mic*_*vko 5 sql-server ssis sql-server-2014 ssis-2014
我正在构建一个包来执行一个带有配置表参数的过程。
我已经构建了两个执行 SQL 任务框。从配置表中填充 SSIS 变量。第二个使用这些变量执行过程。
我面临以下行为。整数变量的默认值是 0,字符串是空字符串。即使在从配置表中获取 NULL 之后,这些变量也会保持它们的值。
如何更改此行为以将 NULL 的 SQL Server 逻辑应用为默认“值”,或者仅启用它们从配置表获取的 NULL 以覆盖其默认值?
SSIS 不支持可空类型,因为它是内置变量。因此,正如您所经历的那样,当将 SQL 中的空整数指定为 SSIS 变量时,该整数将变为零。这些都是突破点,但也有解决方法。
为了保持源表为 NULL,我们需要完全跳过整个“将它们分配给 SSIS 变量”。看一下OLE DB 命令。它与执行 SQL 命令类似,只不过它在数据流级别上操作。它在其中运行的每一行运行一个 SQL 命令。这样做的优点是您不必将 SQL 结果集映射到 SSIS 变量。SELECT TOP 1 * FROM MyConfigTable在数据流中工作的是 SQL 输出和 SQL 输入。通过将 a 传递到 OLE DB 命令中,我们可以完全避免整个“不可为空”的麻烦。在 OLE DB Command 组件内,您可以将 ResultSet 列分配给 SP 参数。
我知道这是一个变化,但我确实认为您想要从连续的两个执行 SQL 任务转移到包含 OLE DB 命令组件的数据流。其他任何事情都会涉及脚本任务。祝你好运!