3

每当我尝试在 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 命令时才会出现问题。ssis 现在如何将数据从 nvarchar 插入到 varchar?

在此处输入图像描述

如果这是一个愚蠢的问题,我很抱歉。我对 SSIS 很陌生。

4

1 回答 1

2

似乎ADO.NET您用来连接的源SQL Azure默认情况下转换 varchar为。因为nvarchar目前OLEDB源不能用于连接SQL Azure,在我的情况下,它将为您提供正确的列数据类型,因此您只能使用Data Conversion 转换DT_WSTRDT_STR

有一个Microsft Connect 项目显示此问题的ADO.NET来源

 DECLARE @column_value AS NVARCHAR(30)
 SET @column_value = ?
 UPDATE YOURTABLE 
 SET column1=convert(varchar(30),@column_value)
于 2013-04-22T06:06:06.880 回答