2013-03-08 32 views
2

使用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,但沒有成功。

回答

1

奇怪的是,它並沒有說爲什麼它無法創建連接。我懷疑司機,因爲如果它是一個登錄問題,它會這麼說。

您是否明確運行32位dtexec?這非常棘手,我問的原因是因爲在安裝了32位運行時的64位環境中手動執行軟件包(雙擊)時,默認情況下會調用32位版本(即使您處於64位)。這是由於PATH環境變量中的路徑:32位程序文件(%ProgramFiles(x86)%)的目錄在64位程序文件(%ProgramFiles%)的目錄路徑之前列出。請記住,所有工具(BIDS和SSDT)都是32位應用程序;儘管它們可以在64位環境中使用,但它們使用的所有數據提供程序都是32位。要使SSIS包能夠在64位環境中使用,您必須擁有適當的數據提供者版本;如果你不這樣做;他們將不得不使用32位運行時間來執行。

+0

嗨迭戈,是在命令行我明確地使用32位版本的dtexec命令(在由dtexec.exe命令生成的第一行我可以讀取「32位版本」)的完整路徑。我認爲這個問題與憑據有關,因爲直接從SQL Server嚮導執行導入,它工作正常。我們仍然可以手動運行導入,但如果可能的話,我會更喜歡更「現代」/自動化的方法。 – Francesco 2013-03-11 08:32:52

相關問題