Sql 不使用数据转换更新ssis中的表
每当我尝试在ssis中将表从源表更新到目标表(sql server到sql server),我都会使用更新查询运行一个存储过程。我通过OLE DB命令执行此SP。现在要运行OLEDB命令,我必须执行从DT_WSTR到DT_STR的数据转换 我的问题是:是否可以在没有数据转换的情况下执行更新?让我困惑的是,我正在从sql server提取数据,并将数据推送到sql server。那么为什么varchar有不同的数据编码(DT_WSTR和DT_STR) 但是如果我只是做一个插入,即不更新(使用oledb命令),我就不必做任何转换,我的SSIS包也可以正常工作。现在DT_WSTR和DT_STR没有问题,但是只有在我尝试运行OLE DB命令时才会出现问题。ssis现在如何将数据从nvarchar插入varcharSql 不使用数据转换更新ssis中的表,sql,sql-server-2008,business-intelligence,ssis,Sql,Sql Server 2008,Business Intelligence,Ssis,每当我尝试在ssis中将表从源表更新到目标表(sql server到sql server),我都会使用更新查询运行一个存储过程。我通过OLE DB命令执行此SP。现在要运行OLEDB命令,我必须执行从DT_WSTR到DT_STR的数据转换 我的问题是:是否可以在没有数据转换的情况下执行更新?让我困惑的是,我正在从sql server提取数据,并将数据推送到sql server。那么为什么varchar有不同的数据编码(DT_WSTR和DT_STR) 但是如果我只是做一个插入,即不更新(使用ol
如果这是一个愚蠢的问题,我很抱歉。我对SSIS很陌生 您用来连接到
sqlazure
的ADO.NET
源代码似乎在默认情况下正在将varchar
转换为nvarchar
。因为目前OLEDB
源代码无法用于连接到sqlazure
,在我的情况下,它将为您提供正确的列数据类型,所以您只能使用它使用数据转换
转换为DT\u WSTR
到DT\u STR
在ADO.NET
源代码中有一个显示此问题的
DECLARE @column_value AS NVARCHAR(30)
SET @column_value = ?
UPDATE YOURTABLE
SET column1=convert(varchar(30),@column_value)
您的源
SQL Azure
和destination
是否都具有相同的数据类型?是的,它们具有相同的表结构和数据类型r u正确映射OLEDB命令中的列。这似乎很奇怪。您可以双击SQL Azure
和Lookup
之间的箭头,然后检查元数据
对于导致此问题的列,它已正确映射。这简直是要了我的命,我很困惑,当我做一个简单的插入时,它运行得很好,但是如果我尝试做一个更新,我就不得不做一个转换。元数据是DT_WSTR。我怀疑由于您使用的是ADO.NET
目标,因此它隐式地从DT_WSTR转换为DT_STR,如Microsoft Connect
中所述。因此,您的意思是说,如果我从Sql Server转换到Sql Server,我可以在不使用数据转换的情况下进行更新?但这对我不起作用。谢谢你的链接。ssis中似乎存在将varchar转换为nvarchar的问题。您不必在OLEDB命令中使用Data Conversion
或Cast
,如Update table set Column=convert(varchar(10),?)