2015-01-05 142 views
0

當我試圖選擇信息從一個數據庫複製到另一個使用SSIS。我直接從舊的SSMS中編寫新表格,所以它們應該是相同的。它們被設置爲[Col1],[Col2],[Col3],[Col4],[Col5],並且具有[Col1]和[Col2]的聚類PK。違反PRIMARY KEY約束插入空表

我開始設立SSIS與OLEDB源與SELECT語句

SELECT [Col1], [Col2], [Col3], [Col4], [Col5] FROM [DBO].[dbo].[table] WHERE [Col5] LIKE 'AB%' 

那麼SQL Server目標數據流任務。我不斷收到主鍵約束錯誤,所以我將其更改爲OLEDB源和文件目標以進行錯誤處理。 615911行被寫入到數據庫和一個額外的49970到該文件。

我找不到拒絕的行之間的共同點。它們都是唯一的,因爲它們必須是源表上的PK約束與目標的PK約束相同。我已經檢查過,並且目標表中沒有任何內容,但是當我嘗試從錯誤輸出文件複製到目標表時,仍然出現PK錯誤。據我所知,目標表中不存在甚至具有相同[Col1]或[Col2]的條目,但其他行確實有重複的[Col1]或[Col2]。

有什麼建議嗎?

+1

你是絕對肯定的目標表中的PK是兩列,而不是隻是其中之一? –

+0

再次檢查兩個表格的模式是否相同。 – chris544

+1

修改您的目的地表格。刪除主鍵。運行包。您的所有數據都應該加載。然後運行一個查詢,找到重複的'選擇D.Col1,D.Col2 FROM dbo.Table爲d GROUP BY D.Col1,D.Col2 HAVING COUNT(1)> 1;'這是否查詢得到什麼?如果是這樣,那麼你有你的重複。如果沒有,那麼你的主鍵不是你指定的。 – billinkc

回答

0

源表是大小寫敏感的。目的地表不是。在將Col1的歸類更改爲CS而不是CI時,再次將其刪除並重新創建。

我仍然不知道爲什麼有重複之間的差異取出PK和行踢到錯誤文件後返回,但只要它的工作,這不是重要的。

相關問題