Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不使用数据转换更新ssis中的表_Sql_Sql Server 2008_Business Intelligence_Ssis - Fatal编程技术网

Sql 不使用数据转换更新ssis中的表

Sql 不使用数据转换更新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中将表从源表更新到目标表(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插入varchar


如果这是一个愚蠢的问题,我很抱歉。我对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),?)