我有一个SomeId
类型的包变量string
(因为SSIS包变量窗格中没有用于将其设置为GUID的选项)。
在“派生列”步骤中,我将变量的表达式设置为(DT_GUID)@[User::SomeId]
,将数据类型自动设置为unique identifier [DT_GUID]
下一步是'OLE Db Destination'
我在上述两个步骤之间“启用了数据查看器”,我可以看到SomeId
列中填充了新的guid。但是,只要它尝试将其导入数据库表,就会失败并显示以下错误。
[NameOfOleDbDest1 [181]]错误:SSIS错误代码DTS_E_OLEDBERROR。一个 发生OLE DB错误。错误代码:0x80004005。 OLE DB记录是 可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005描述:“强制转换的字符值无效 说明书中,”
我认为它与我如何将变量转换为DT_GUID有关,但是人们在stackoverlfow上提到的其他方式*会在表达式上引发红色突出显示错误。
*以下是我尝试将字符串转换为guid的其他方法,但引发了错误:
(DT_GUID)[User::SomeId]
(DT_GUID)("{" + [User::SomeId] + "}")
只有当我尝试(DT_GUID)@[User::SomeId]
时才会成功。但是很明显,当我执行包时会出现上述错误。