文章編號: 952111 - 上次校閱: 2008年5月5日 - 版次: 1.1

目的資料表識別資料行不包含與來源資料表相同的識別值,在資料匯入或匯出 Microsoft SQL Server 2005 中的資料,使用 SQL Server 管理 Studio 之後

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

徵狀

考慮下列案例:
  • 在 Microsoft SQL Server 2005 中您可以使用 SQL Server 管理 Studio 匯入資料,或從來源資料表匯出資料到目的資料表。
  • 同時來源資料表] 和 [目的資料表包含識別資料行。
  • 啟用 [啟用識別插入] 選項的來源資料表]。
  • 在 [SQL Server 匯入及匯出精靈] 中,您啟用 [許多資料表的最佳化 選項。
在這種情況下將資料匯出或匯入完成後您會發現目的資料表識別資料行不包含與來源資料表相同的識別值。而是,目的資料表識別資料行包含 resequenced 的識別值。

附註在 Microsoft SQL Server 2000 中,不會發生這個問題。

發生的原因

SQL Server 匯入及匯出精靈並不在 IDENTITY_INSERT 如果將屬性設定為資料表 許多資料表的最佳化 選項已啟用,就會發生這個問題。此 IDENTITY_INSERT 屬性一次只能有一個資料表中設定。如果您啟用精靈中 許多資料表的最佳化 選項,複製作業會在同一時間執行的數個執行緒上的數個資料表。因此,SQL Server 匯入及匯出精靈不會設定 IDENTITY_INSERT 屬性。

解決方案

如果要解決這個問題,不要啟用 最佳化許多資料表的 選項,SQL Server 匯入及匯出精靈 」 中。

如果未啟用 最佳化許多資料表的 選項資料作業可能要花較長的時間才能完成。如果想保留識別值,當您匯入或匯出大量的資料時建議使用下列方法之一:
  • 您可以使用 bcp 公用程式搭配使用 –E 參數傳送資料表。

    比方說第一次執行類似下列的命令,從來源資料表匯出資料至.txt 檔案的命令:
    Bcp.exe SourceTableC:\FileName.txt-S。-T-c –E
    然後,執行類似下列的命令,以匯入資料到目的資料表的命令:
    Bcp.exe DestinationTableC:\FileName.txt-E S。-T-c-
  • 卸離之資料庫,然後將資料庫附加到目的伺服器。

其他相關資訊

如果您啟用的來源資料表的 [啟用識別插入] 選項,SQL Server 匯入及匯出精靈應該執行 SET IDENTITY_INSERT ON 陳述式,對於包含識別資料行的每個資料表。然後識別值就會插入到目的資料表之後 SQL Server 匯入及匯出精靈應該執行 SET IDENTITY_INSERT 關陳述式。不過,這些作業不會發生正確如果 許多資料表的最佳化 選項已啟用。

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
關鍵字:?
kbmt kbtshoot kbexpertiseadvanced kbsql2005tool kbprb KB952111 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:952111? (http://support.microsoft.com/kb/952111/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。