我们有一个 SSIS 包将数据从 Oracle 数据库下载到 SQL Server 数据仓库。对于这个数据仓库,设置了几个环境;开发、测试和生产。开发和测试共用一台机器,Prod 是独立的。
当 SSIS 包在 PROD 机器上运行时,它将 Varchar2 列从我们的 Oracle 源数据库以 DT_WSTR 格式下载到 MSSQL,并将其保存到 NVarchar 列。IE涉及的所有步骤都支持Unicode。
当针对 DEV/Test 框上的相同源数据库运行相同的包时,它以某种方式将外部列视为 Varchar,将其派生到数据流中的 DT_STR 并拒绝将其存储在 NVarchar 列中。
所有操作系统都是 Win2K8r2、MSSQL 2008 64 位。该包在 32 位模式下运行,从 BIDS 或 SQL 代理运行时会看到相同的行为。
有人想知道为什么吗?我已经看到了禁用验证外部元数据的建议 ( https://stackoverflow.com/a/18383598/2903056 ),但这对我们的情况来说不是一个实用的建议。