本地 PC 和服务器环境之间的类型转换变化
Type Conversion changes between Local PC and Server environment
我正在从 SQL table 中获取一些简单数据,进行一些小的转换并将其转换为 Unicode。然后我将它输出到 Oracle 服务器上的 Oracle CHAR(1 byte)
字段中。
这在我的本地 PC 上没有任何错误。然后我部署到服务器,它说
"Column "A" cannot convert between unicode and non-unicode string data types".
尝试了几种方法后,我举起双手,将 data conversion
取出来转为 unicode,现在它坏了,无法在我的 PC 上 运行。
但是 - 它现在可以在服务器上运行并且一切正常。我搜索过并发现其他人也遇到过这个问题,但 none 似乎找到了原因并通过其他方式解决它。
为什么我的 PC 和服务器不能一样工作?所有 table 和数据连接都是相同的。除了执行位置外没有变化。
我在我的 SSIS 包中遇到了同样的问题,但找不到解决方案。
这是一个简单的数据,不包含任何unicode字符,如果使用SQL查询或.net代码转换它不会抛出任何异常...但是使用 Data Conversion Transformation
时在 SSIS 中抛出异常
解决方法
我做了一个简单的解决方法来实现这个(如果再次出现这个错误你可以使用它)
- 我用
Script Component
替换了 Data Conversion
组件
- 我将要转换的列标记为输入
- 对于我要转换的每一列,我都创建了一个
DT_WSTR
类型的输出列
在每列的脚本中,我使用了以下代码:(假设输入为 inColumn
,输出为 outColumn
)
If Not Row.inColumn_IsNull AndAlso _
Not String.IsNullOrEmpty(Row.inColumn) Then
Row.outColumn = Row.inColumn
Else
Row.outColumn_IsNull = True
End If
或
如果源是 OLEDB Source
您可以在 OLEDB source command
中使用转换函数
例如:
SELECT CAST([COLUMN] as NVARCHAR(255)) AS [COLUMN]
FROM ....
我正在从 SQL table 中获取一些简单数据,进行一些小的转换并将其转换为 Unicode。然后我将它输出到 Oracle 服务器上的 Oracle CHAR(1 byte)
字段中。
这在我的本地 PC 上没有任何错误。然后我部署到服务器,它说
"Column "A" cannot convert between unicode and non-unicode string data types".
尝试了几种方法后,我举起双手,将 data conversion
取出来转为 unicode,现在它坏了,无法在我的 PC 上 运行。
但是 - 它现在可以在服务器上运行并且一切正常。我搜索过并发现其他人也遇到过这个问题,但 none 似乎找到了原因并通过其他方式解决它。
为什么我的 PC 和服务器不能一样工作?所有 table 和数据连接都是相同的。除了执行位置外没有变化。
我在我的 SSIS 包中遇到了同样的问题,但找不到解决方案。
这是一个简单的数据,不包含任何unicode字符,如果使用SQL查询或.net代码转换它不会抛出任何异常...但是使用 Data Conversion Transformation
解决方法
我做了一个简单的解决方法来实现这个(如果再次出现这个错误你可以使用它)
- 我用
Script Component
替换了 - 我将要转换的列标记为输入
- 对于我要转换的每一列,我都创建了一个
DT_WSTR
类型的输出列
在每列的脚本中,我使用了以下代码:(假设输入为
inColumn
,输出为outColumn
)If Not Row.inColumn_IsNull AndAlso _ Not String.IsNullOrEmpty(Row.inColumn) Then Row.outColumn = Row.inColumn Else Row.outColumn_IsNull = True End If
Data Conversion
组件
或
如果源是 OLEDB Source
您可以在 OLEDB source command
例如:
SELECT CAST([COLUMN] as NVARCHAR(255)) AS [COLUMN]
FROM ....