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