通过 SQL Server 2008 R2 的导入向导,我创建了一个 dtsx 包,用于将数据从 Oracle 数据库提取到 SQL 服务器。在向导步骤中,我编辑了 SQL 脚本命令,以便在迁移期间创建新表。
在向导步骤中,我在包保护级别区域中选择了“不保存敏感数据”。
生成的命令行是:
dtexec.exe /FILE import_data.dtsx
CONNECTION DestinationConnectionOLEDB; Data Source=source;Initial Catalog=TEST;
Provider=SQLNCLI10; Integrated Security=SSPI;Auto Translate=false;
CONNECTION SourceConnectionAdoNET;Data Source=Oracle;PASSWORD=XYZ;User ID=Ned;
CHECKPOINTING OFF
REPORTING EWCDI
但是我总是遇到以下异常:
Error: 2013-03-08 09:54:55.65
Code: 0xC0047062
Source: Data Flow Task 1 Source - test_Table [1]
Description: Microsoft.SqlServer.Dts.Runtime.DtsCouldNotCreateManagedConnecti
onException: Could not create a managed connection manager.
at Microsoft.SqlServer.Dts.Runtime.ManagedHelper.GetManagedConnection(String
assemblyQualifiedName, String connStr, Object transaction)
at Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManager100.AcquireCo
nnection(Object pTransaction)
at Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.AcquireConnections(Object
transaction)
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostAcquireConnectio
ns(IDTSManagedComponentWrapper100 wrapper, Object transaction)
End Error
如果我让包从导入向导运行,通过选择“立即运行”复选框,它工作正常。这让我觉得可能连接字符串中缺少某些内容,从而阻止正确连接到数据库。
对于 SQL Server(目标 DB),我们使用 Windows 身份验证登录数据库,并使用 Oracle(源 DB)的用户名/密码。
我也尝试使用 32 位版本的 dtexec.exe,但没有成功。