创建的表有一个函数,将默认值分配给 NOT NULL 列.在 SSIS 中,不会调用默认函数



我正在尝试对一个表中几乎没有 NOT Null 列的表运行插入语句。如果值未分配给这些列,则定义的默认函数将分配值。当我尝试从 SSIS 运行 Insert 语句时,由于非空约束,包失败。请指教。

如果我为所有列分配值,它就会成功运行,但我希望自动分配默认值,而不是每次都传递。

下面是表格脚本: 更改表 [费用] 为 [创建者] 添加默认值 ([dbo].svf_GetUser( 去

[OLE DB 目标 [2]] 错误:SSIS 错误代码DTS_E_OLEDBERROR。 发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。 源:"Microsoft SQL Server 本机客户端 11.0" 结果: 0x80004005 说明:"语句已终止。 OLE DB 记录可用。 源:"Microsoft SQL Server 本机客户端 11.0" 结果: 0x80004005 说明:"无法将值 NULL 插入到列'创建者',表 'SAI.dbo.Fee';列不允许空值。插入失败。

如果你将 null 传递到插入语句中,那么它会通过给出 不能将 null 插入 null 到 Not null 列中而出错,但如果你的插入语句像 插入到表中(COL1,COL2,COL3(值(1,2,空(,然后删除该列(COL3(从这里它将采用默认值。

我意识到这个问题在我回复时已经 18 个月了,但我刚刚在我正在处理的 SSIS 工作流中遇到了此错误,其中目标表中的字段定义为:

[OBSERVATION_GUID] [uniqueidentifier] NOT NULL DEFAULT newid()

该表具有聚集列存储索引,因此在 SSIS 包中,我必须使用"表或视图 - 快速加载"。您在问题中描述的错误消息已抛出。答案是取消选中"保留空值"。我在表的其他字段中有空值,但关闭此选项不会影响它们(例如将它们转换为空字符串或其他东西(。看起来"保留空值"实际上只是阻止触发插入的空值的 DEFAULT 覆盖。

最新更新