【发布时间】:2024-01-18 18:40:01
【问题描述】:
我有一个带有传输 SQL Server 对象任务步骤的 SSIS 包,该步骤将表(架构和数据)从一个数据库传输到另一个数据库。 源数据库和目标数据库具有不同的排序规则。 (不知道是不是相关信息。)
在某些测试环境中,某些字符(匈牙利语重音字符:ő,ű)在传输过程中会转换为非重音字符 (o,u)。在其他测试环境中,一切都很好(匈牙利重音字符被很好地转移)。源表列是非 unicode (varchar),我们无法更改它,因为它是旧系统。
实验表明此行为取决于 Windows 区域设置(控制面板/区域和语言/管理/“非 Unicode 程序的语言”)。如果设置为匈牙利语,则一切正常,但如果设置为英语,则匈牙利口音会丢失。
问题是我无法强制执行特定的 Windows 语言环境设置,因此我正在寻找一种不依赖于 Windows 语言环境的正确方法。
有没有办法告诉 SSIS 在传输中使用匈牙利代码页?
【问题讨论】:
-
只是在这里猜测,如果您更改流程会怎样。从传输对象步骤中排除包含匈牙利字符的表。然后在一个包中编写相同的传输逻辑。当您从表中提取数据时,而不是在下拉列表中选择表,编写自定义选择语句将该数据转换为 nvarchar 字段。这可能保留字符。如果你想看一个例子,我可以敲一个。
-
我已经做了一个解决方法。删除了 SSIS,现在我正在使用一个存储过程,它通过链接服务器进行 INSERT INTO + SELECT。即使使用英语语言环境,也可以保留口音,所以没关系。但我还是很好奇它是否可以用 SSIS 制作。