2010-06-15 127 views
0

我想使用SSIS將數據庫從訪問轉換爲SQL Server。我無法轉換訪問數據庫的日期/時間列。 SSIS說類似於:使用SSIS將訪問轉換爲SQL Server的日期

conversion between DT_Date and DT_DBTIMESTAMP is not supported. 

(它從我的德語版翻譯,可能會有所不同英文版)。在Access中我有日期/時間列,在SQL Server中我有日期時間。在SSIS的數據流圖中,我有一個用於訪問數據庫的OLE DB源,一個sql服務器目標和一個數據轉換。在數據轉換中,我將列轉換爲日期[DT_DATE]。它們是這樣連接的:

AccessDB -> conversion -> SQL DB 

我在做什麼錯了?如何將Access日期列轉換爲SQL Server日期列?

+0

錯誤圖標發生在SQL服務器目標 – Arne 2010-06-15 10:24:23

+0

我使用SQL Server 2008 – Arne 2010-06-15 12:16:13

回答

1

看起來您需要添加特定轉換才能將此列轉換爲正確的類型。這是您需要轉換爲的DT_DBTIMESTAMP,而不是DT_DATE。例如,使用派生列轉換,您可以使用如下表達式:

(DT_DBTIMESTAMP)YourDateColumn 
+0

感謝您的答覆。當我添加派生列轉換並將列轉換爲DT_DBTIMESTAMP時,我得到的錯誤是從DT_DATE到DT_DBTIMESTAMP的轉換不受支持。 – Arne 2010-06-15 12:05:04

+0

這很奇怪。我試着通過從1999年下載舊的Northwind Access數據庫示例,將其轉換爲Access 2003,然後使用連接到該Access MDB的OLE DB源創建SSIS包,檢索訂單表(包含多個DT_DATE - 或Access稱爲日期/時間 - 列),將衍生列轉換附加到OLEDB源,並且我可以毫無問題地投射到DT_DBDATETIME。 您確定以前的轉換不會導致此錯誤(被刪除)嗎? – 2010-06-15 20:53:45

+0

是的,我刪除了以前的轉換。現在我有「AccessDB - >派生列轉換 - > SQL DB」。但是,錯誤顯示在最後一個Box,即SQL DB中。這可能是問題嗎?我使用SSIS中的數據庫在數據庫中創建了一個新表,當您單擊SQL DB屬性中的新按鈕時創建標準SQL。目標數據庫使用哪種數據類型? – Arne 2010-06-17 19:18:07

0

您可以在源端使用另一個提供程序。我使用JET提供程序。我在沒有安裝Access的計算機上執行此操作。當我嘗試使用Office 12.0 Access數據庫引擎OLE DB提供程序創建數據連接時,我收到一條錯誤消息,指出工作組信息文件丟失。我在連接測試中收到此消息。

問題是如果轉換取決於您用來獲取數據的數據庫驅動程序。我無法在我工作的服務器上安裝Access,因此我無法嘗試。這可能是問題的原因嗎?

+0

哎呀,我不能回答你的評論... 我有版本10.0.1600.22和SP1版本的MS站點說10.00.2531.00,所以我想我沒有它。 – Arne 2010-06-18 16:58:41

+0

我建議您在嘗試其他任何操作之前先安裝SP1。當問題可能是由幾個月前已經解決的錯誤引起的時候,尋找解決方案沒有任何意義... 此外,ACE驅動程序(更新版本的JET,這是我在我的測試中使用)可以免費下載:http://www.microsoft.com/downloads/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en 還有一個用於Office 2010的版本,它應該是向後兼容的。如果可以的話,我建議你試試看。應該工作正常。 – 2010-06-21 19:50:43

0

鑄造D_Date列到DT_DBTIMESTAMP爲我解決同樣的問題。

相關問題