每当我尝试在ssis中将表从源表更新到目标表(sql server到sql server)时,我都会运行带有更新查询的存储过程。我通过OLE DB命令执行此SP。现在,要运行OLE DB命令,我必须执行从DT_WSTR到DT_STR的数据转换。
我的问题是:是否可以在没有此数据转换的情况下执行更新?令我感到困惑的是,我从sql server中提取数据并将数据推送到sql server。那么为什么varchar有不同的数据包含(DT_WSTR和DT_STR)?
但是,如果我只是插入,即没有更新(使用OLE DB命令)我不必做任何转换,我的SSIS包工作正常。现在没有DT_WSTR和DT_STR的问题,但只有当我尝试运行OLE DB命令时才会出现问题。现在如何将数据从nvarchar插入varchar?
如果这是一个愚蠢的问题,我很抱歉。我是SSIS的新手。
答案 0 :(得分:2)
用于连接ADO.NET
的{{1}}来源似乎默认情况下会将SQL Azure
转换为varchar
。因为目前nvarchar
来源不能用于连接到OLEDB
,在我的情况下,它会为您提供正确的列数据类型,因此您可以使用SQL Azure
转换为Data Conversion
到DT_WSTR
。
DT_STR
来源显示ADO.NET
来源
DECLARE @column_value AS NVARCHAR(30)
SET @column_value = ?
UPDATE YOURTABLE
SET column1=convert(varchar(30),@column_value)