none
從SQL2008R2匯資料到SQL2000後主key消失 RRS feed

  • 一般討論

  • 原始資料是SQL2000,將檔案掛到2008後可正常運作

    之後因為作業需求,將2008的檔案使用匯入的方式匯到SQL2000

    可是發生問題,首先預存程序(store procedures)沒有跟著資料一起匯過去

    接下來發現原本在2008、2000資料裡應該有的主key,匯回2000後主key消失

    目前已有部分資料重複

    現有資料為1/10 2008資料

    1/11-1/17消失主key 2000資料

    1/9 2000原始資料

    想要請教高手們...應該要怎麼解決這樣的問題??

    作業系統:win 2003 ent + sql 2000 ent 

                   win 2008r2 standard + sql 2008 r2 standard

    • 已變更類型 Alex ChuoModerator 2011年1月27日 下午 01:07 提問者未回應後續處理結果
    2011年1月17日 上午 03:22

所有回覆

  • How did you do that? With copy objects task in ssis? Did you choose all objects to copy?
    2011年1月17日 上午 03:29
  • 我是使用匯出資料精靈將資料匯出

    在匯出資料選項直接選取所有物件(直接勾選左上角的方框)

    想請問有沒有辦法把主key直接匯到2000的方法?

    還是把2000的資料掛回2008再匯到1/10 2008的資料?

    目前測試中...

    煩請各路高手幫忙看一下該怎麼處理比較好..

    2011年1月17日 上午 03:59
  • 於精靈中「選擇目的地」的對話視窗中,使用 .NET Framework Data Provider for SQL Server 還是 Microsoft OLE DB Provider for SQL Server?


    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    2011年1月17日 下午 03:15
    版主
  • 我是使用匯出資料精靈將資料匯出

    在匯出資料選項直接選取所有物件(直接勾選左上角的方框)

    想請問有沒有辦法把主key直接匯到2000的方法?

    還是把2000的資料掛回2008再匯到1/10 2008的資料?

    目前測試中...

    煩請各路高手幫忙看一下該怎麼處理比較好..

    Should use copy objects task in ssis as I said above.
    2011年1月17日 下午 07:49
  • 原始資料是SQL2000,將檔案掛到2008後可正常運作

    之後因為作業需求,將2008的檔案使用匯入的方式匯到SQL2000

    可是發生問題,首先預存程序(store procedures)沒有跟著資料一起匯過去

    接下來發現原本在2008、2000資料裡應該有的主key,匯回2000後主key消失

    目前已有部分資料重複

    現有資料為1/10 2008資料

    1/11-1/17消失主key 2000資料

    1/9 2000原始資料

    想要請教高手們...應該要怎麼解決這樣的問題??

    作業系統:win 2003 ent + sql 2000 ent 

                   win 2008r2 standard + sql 2008 r2 standard

    如果我沒弄錯的話匯入匯出精靈只能從一個或多個資料表或檢視複製資料,並無法複製SP,如果你要複製SP的話可能要考慮使用SSIS。

    另外,如果你從來源資料庫將一個有PK的資料表匯入到一個由匯入匯出精靈產生的目的資料庫中的資料表,SQL SERVER只會幫你匯資料,

    預設不會幫你PK,你可在精靈裡面的資料行對應中點選編輯SQL來手動加入PK。

    2011年1月24日 下午 11:17
    版主
  • 1. 關於不同版本物件複製

    資料匯入匯出作業,來源目的同樣 Table 名稱預設就只有資料

    來源目的不同名稱,可以編寫 SQL 產生目的 Table 或是直接 drop & create table

    不過,如果物件( table、sp、...)不多,您可以考慮使用 "產生指令碼" 的方式複製物件比較保險

    特別是從較新版本降轉到舊版本 SQL Server 時特別好用,可以檢視 T-SQL script 與針對相容性除錯

    透過 SSMS 編寫指令碼只要特別注意

     

    • "針對伺服器版本編寫指令碼" 選擇 [SQL Server 2000]
    • "編寫資料的指令碼" 選擇 [是]

     

     然後帶著產出的 T-SQL scripts 就可以很方便的複製物件到其他 SQL Server

     

    2. 關於重複資料

    1/9 (2000) + 1/10 (2008) 資料應是正常無重複,問題發生在降轉 2008 回 2000 時,忽略掉 PK 不見、產生重複資料

    針對重複資料比較棘手,因為不知道影響層面有多廣,如果資料不要了,就看狀況砍掉重複也無所謂的資料列

    如果資料還要,建議以下處理方法與順序,您參考看看

     

    • 另外新建個結構一樣的 Table,倒入沒問題的資料(1/9+1/10)
    • 再倒入可能有重複 PK 的資料時(1/11-1/17),另開欄位保留舊 PK,再重新在 PK 欄產生 PK
    • 然後拿新 PK 去找有參考到舊 PK 的資料(1/11-1/17),更新成新的 PK

     

    如果關連的資料不多,慢慢做應該可以回覆

    如果關連表太多,或是紀錄可供識別的欄位太少,甚至除了 PK 欄以外資料長得都一樣時就麻煩大了

    2011年1月30日 下午 06:06