2013-02-12 238 views
16

我正在嘗試使用SQL Server導入和導出嚮導將數據從服務器中的一個數據庫導入不同服務器中的新表。 (SQL Server Management Studio中2012)SQL Server導入和導出嚮導中的源類型200?

在嚮導,我查「編寫一個查詢來指定要傳輸的數據」,幷包含以下四列的SQL語句返回數據:

+-----------------------------------------------------------------------------+ 
| ID(varchar(100)) | Title(text) | Description(text) | IsActive(tinyint)| 
+-----------------------------------------------------------------------------+ 

我想改變類型的新表

+----------------------------------------------------------------------------------------+ 
| ID(varchar(4)) | Title(varchar(200)) | Description(varchar(2000)) | IsActive(bit)| 
+----------------------------------------------------------------------------------------+ 

因此,在「列映射」頁面(在「選擇源表和視圖」頁面,我點擊「編輯映射...」) ,我將Destination Type更改爲上述類型。 然後,單擊「下一步」,在「查看數據類型映射」頁面後,我收到寫着「Found 3 unknown column type conversion(s). You are only allowed to save the package

的數據類型映射顯示以下信息的錯誤:

icon Source Column Source Type Destination Column Destination Type Convert 
---------------------------------------------------------------------------------- 
error ID    200   ID     varchar 
error Title   200   Title     varchar 
error Description  201   Description   varchar 
warning IsActive   tinyint  IsActive    bit  

即使我不更改「編輯映射...」頁面中的數據類型,我得到相同的錯誤。

我不明白「200」在數據類型的上下文中的含義,以及如何將這些數據導入到不同服務器中的新表中?

我很感激任何幫助。

回答

4

我敢打賭,使用嚮導不能將文本列插入到varchar列中。根據表的大小,您可以通過SSMS將源導出到csv,然後導入它。這應該工作,但如果你有多個表導入你可以添加一個鏈接服務器。然後,你可以有資格舊錶或新表是這樣的:

insert into [new_server].database.dbo.tablename 
select * from old_table 

我知道SQL2000是一個用於創建鏈接的服務器痛苦,雖然這是我猜你正試圖從,因爲你有導出文本列。

+0

謝謝。我在想,如果使用嚮導導入或導入嚮導是不可能的,但這種解決方案的工作方式與嚮導一樣簡單: – kabichan 2013-02-12 17:04:29

+0

就像其他人遇到此問題一樣,請確保您啓用身份插入功能需要在導入的表中保留相同的PK'SET IDENTITY_INSERT DestinationTableName ON'。在您的查詢結構如上所示之後,將其重新關閉。SET IDENTITY_INSERT DestinationTableName OFF' – Tommy 2014-01-26 17:47:43

13
+1

它適用於SQL Server 2008 R2管理ment Studio。他們在SQL Server 2012中引入了它,但仍然是一個問題。一個大錯誤的排序..不敢相信他們還沒有解決它呢! – 2014-09-23 21:14:39

25

隨着實驗位這個錯誤似乎只當你有一個查詢發生作爲來源。接受的答案不適用於我,因爲複製到平面文件會導致相同的錯誤。

爲了解決這個問題,我把我的查詢到View然後選擇Copy From one or more Tables Or Views而不是Write a query...

我通過嚮導去正常後和(固定它除了微軟)我的數據經歷,並沒有錯誤

+2

這是絕對正確的方式來解決這個醜陋的時間消耗微軟的錯誤。你值得一杯啤酒先生 – Batu 2016-01-04 18:33:34

+0

保存我的屁股......謝謝 – kstubs 2016-01-27 14:31:50

+0

輝煌!有這個問題試圖移動一些數據的數據類型的文本......像一個魅力工作!謝謝@shoe – Eli 2016-06-09 14:41:40

5

一個長期的解決方案(或有他們了嗎?) 也是幾個環節深從答案已發佈。

在受影響的機器上,有一個xml文件,它爲每個轉換類型定義了一個代碼到值的映射。
看到什麼與「200」&「201」導致失敗,是一個缺失的映射
....好吧,它不應該通過「200/201」,但正如它那樣,我們希望它被映射

它可以手動插入,如果你願意玩這樣的配置。

這裏就是我得到了答案,卻很有辦法了網頁: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/97ff1f01-c02a-4c9a-b867-8eaecc464cfb/2012-sp1-no-longer-recognizes-common-data-types?forum=sqlintegrationservices

的映射文件是在 C:\ Program Files文件(x86)的\ Microsoft SQL Server的\ 110個\ DTS \ MappingFiles \
(或等效)

每種類型的源到目標轉換都有一個。

對於SQL Server之間去,看看那些如
MSSQLToSSIS10.XML
MSSql9ToMSSql8.xml
MSSql10ToMSSql9.xml

如果您看到

<!-- varchar --> 
<dtm:DataTypeMapping > 
    <dtm:SourceDataType> 
     <dtm:DataTypeName>varchar</dtm:DataTypeName> 
    </dtm:SourceDataType> 
    <dtm:DestinationDataType> 
     <dtm:CharacterStringType> 
      <dtm:DataTypeName>DT_STR</dtm:DataTypeName> 
      <dtm:UseSourceLength/> 
     </dtm:CharacterStringType> 
    </dtm:DestinationDataType> 
</dtm:DataTypeMapping> 

添加了 「200」 映射匹配,以便最終與

<!-- varchar --> 
<dtm:DataTypeMapping > 
    <dtm:SourceDataType> 
     <dtm:DataTypeName>varchar</dtm:DataTypeName> 
    </dtm:SourceDataType> 
    <dtm:DestinationDataType> 
     <dtm:CharacterStringType> 
      <dtm:DataTypeName>DT_STR</dtm:DataTypeName> 
      <dtm:UseSourceLength/> 
     </dtm:CharacterStringType> 
    </dtm:DestinationDataType> 
</dtm:DataTypeMapping> 
<dtm:DataTypeMapping > 
    <dtm:SourceDataType> 
     <dtm:DataTypeName>200</dtm:DataTypeName> 
    </dtm:SourceDataType> 
    <dtm:DestinationDataType> 
     <dtm:CharacterStringType> 
      <dtm:DataTypeName>DT_STR</dtm:DataTypeName> 
      <dtm:UseSourceLength/> 
     </dtm:CharacterStringType> 
    </dtm:DestinationDataType> 
</dtm:DataTypeMapping> 

以相同的方式修復nvarchar和其他任何其他問題!

3

我能夠通過在SQL中將字符字段轉換爲char(##)並將目標數據類型更改爲varchar(##)來解決此問題。這些字段在使用前可能需要修剪,但導入工作正常。

0

最快的解決方案是使用導入/導出嚮導將數據導出到同一數據庫(源)中的新表。然後從新表中導出數據。 不知何故,導入/導出嚮導在創建新表格時發揮了他的魔力(不是真的)。 謝謝Jyoti結束使用導入/導出嚮導的痛苦。

1

你真的不需要做任何擺弄config,views或任何東西。只需保存SSIS包並通過在資源管理器中雙擊執行即可。這將啓動「執行包實用工具(DTExecUI.exe在ManagementStudio文件夾中)應該沒有錯誤運行包。

相關問題