使用SQL Server 2008 R2中的导入向导,我创建了一个dtsx包以将数据从Oracle数据库提取到SQL服务器。在向导步骤中,我编辑了SQL脚本命令以便在迁移过程中创建新表。从命令行运行使用导入向导生成的SSIS包
在向导步骤中,我选择了“不保存敏感数据”包装保护级别区域。
生成的命令行是:
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(目标数据库),我们使用Windows身份验证登录到Oracle(源数据库)的数据库和用户名/密码。
我也试过使用32位版本的dtexec.exe,但没有成功。
嗨迭戈,是在命令行我明确地使用32位版本的dtexec命令(在由dtexec.exe命令生成的第一行我可以读取“32位版本”)的完整路径。我认为这个问题与凭据有关,因为直接从SQL Server向导执行导入,它工作正常。我们仍然可以手动运行导入,但如果可能的话,我会更喜欢更“现代”/自动化的方法。 – Francesco 2013-03-11 08:32:52