共用方式為


如何使用大量複製程式 (BCP) 從一個資料庫匯出 Microsoft Dynamics GP 數據,並將數據匯入至新的資料庫

本文討論如何使用大量複製程式 (BCP) 來導出數據,以及使用 Microsoft Dynamics GP 或 Microsoft Business Solutions - Great Great 發行匯入數據。

適用于: Microsoft Dynamics GP
原始 KB 編號: 875179

簡介

  1. 備份您的公司資料庫。

  2. 將下列CreateBulkCopyOut.sql腳本複製並貼到 Microsoft SQL 查詢分析器中。

    /* Script to create bcp commands to export data for all tables. */ SET QUOTED_IDENTIFIER OFF select 'bcp "TWO..' + name + '" out ' + name + '.out -e ' + name + '.err -c -b 1000 -U sa -P password -t "|" -S SERVERNAME -r "#EOR#\n"' from sysobjects where type = 'U' order by name
    

    在腳本中,將下列佔位元取代為正確的資訊:

    • TWO 取代為您公司資料庫的名稱。

    • password 取代為您的 sa 密碼。

    • 以您的 Microsoft SQL Server 實例名稱取代 SERVERNAME

      注意事項

      若要開啟查詢分析器,請選取 [開始]、指向 [程式]、指向 [Microsoft SQL Server],然後選取 [查詢分析器]

      注意事項

      如果您使用 Microsoft SQL Server 2000 Desktop Engine (也稱為 MSDE 2000) ,請在 Microsoft 支援服務 Administrator Console 中執行語句。 若要開啟 [支持系統管理員控制台],請選取 [開始]、指向 [程式]、指向 [Microsoft 支援服務 系統管理員控制台],然後選取 [支持系統管理員控制台]。 支援系統管理員主控台需要個別安裝。 您可以使用 Great 擴充安裝 CD 編號 2 來安裝程式。

  3. 對資料庫執行文本,然後將結果儲存至批處理檔。 如果要執行這項操作,請依照下列步驟執行:

    • 如果您使用查詢分析器,請選取結果窗格,然後在 [檔案] 功能表上選取 [另存新]。 建立名為 BCPData 的資料夾,將此檔案 命名Copyout.bat,然後選取 [ 儲存]
    • 如果您使用支持系統管理員控制台,請選取 [ 檔案],然後選取 [ 匯出]。 建立資料夾並將它命名為 BCPData。 將檔案 命名Copyout.bat。 然後選取 [儲存]
  4. 將下列CreateBulkCopyIn.sql腳本複製並貼到查詢分析器中。

    /* Script to create bcp commands to import data for all tables. */ SET QUOTED_IDENTIFIER OFF select 'bcp "TWO..' + name + '" in ' + name + '.out -e ' + name + '.err -c -b 1000 -U sa -P password -t "|" -S SERVERNAME -r "#EOR#\n"' from sysobjects where type = 'U' order by name
    

    在腳本中,將下列佔位元取代為正確的資訊:

    • TWO 取代為您公司資料庫的名稱。

    • password 取代為您的 sa 密碼。

    • SERVERNAME 取代為 SQL Server 實例的名稱。

      注意事項

      若要開啟查詢分析器,請選取 [開始]、指向 [程式]、指向 [Microsoft SQL Server],然後選取 [查詢分析器]

      注意事項

      如果您使用 SQL Server 2000 桌面引擎,請在支援系統管理員控制台中執行 語句。 若要開啟 [支持系統管理員控制台],請選取 [開始]、指向 [程式]、指向 [Microsoft 支援服務 系統管理員控制台],然後選取 [支持系統管理員控制台]。 支援系統管理員主控台需要個別安裝。 您可以使用 Great 擴充安裝 CD 編號 2 來安裝程式。

  5. 對資料庫執行文本,然後將結果儲存至批處理檔。

    • 如果您使用查詢分析器,請選取結果窗格,然後在 [檔案] 功能表上選取 [另存新]。 建立資料夾並將它命名為 BCPData。 將檔案命名 Copyin.bat,然後選取 [ 儲存]
    • 如果您使用支持系統管理員控制台,請選取 [檔案 ],然後選取 [ 匯出]。 建立資料夾並將它命名為 BCPData。 將檔案 命名Copyin.bat。 然後選取 [儲存]
  6. 執行 bcp 命令,將資料移出公司資料庫。 若要這樣做,請使用適當的方法。

    • 針對 Microsoft SQL Server 2000 或 MSDE 2000

      1. 開啟 BCPData 資料夾。

      2. 按兩下 Copyout.bat 檔案。

        注意事項

        批處理檔會啟動 BCP 程式,以將資料從資料庫複製到文字檔。

      3. 開啟 BCPData 資料夾。

      4. 以滑鼠右鍵按兩下 Copyout.bat 檔案,然後選取 [編輯] 以在記事本或其他文字編輯器中開啟檔案

      5. 選取所有文字。 若要這樣做,請選取 [ 編輯],然後選取 [ 全選]。 或者,按 Alt+A。

      6. Copyout.bat 檔案中的所有文字複製到剪貼簿。 若要這樣做,請選取 [ 編輯],然後選取 [ 複製]。 或者,按 Ctrl+C。

      7. 開啟 [命令提示字元] 視窗。 若要這樣做,請選取 [ 開始],選取 [ 執行],輸入 cmd,然後選取 [ 確定]

      8. Copyout.bat 檔案的內容貼到 [命令提示字元] 視窗中。 若要這樣做,請以滑鼠右鍵按兩下視窗,然後選取 [ 貼上]

    • 針對 Microsoft SQL Server 2005

      1. 開啟 BCPData 資料夾。

      2. 按兩下 Copyout.bat 檔案。

        注意事項

        批處理檔會啟動 BCP 程式,以將資料從資料庫複製到文字檔。

  7. 從 Microsoft Dynamics GP 中刪除公司。 若要這樣做,請以 sa 使用者的身分登入 Great Great 的。 選 取 [工具],指向 [安裝程式],指向 [ 系統 ],然後選取 [ 公司]。 選取查閱視窗以顯示列出的所有公司。 選取公司,然後選取 [ 刪除]

    注意事項

    針對早於 Microsoft Great 發行者 8.0 的 Microsoft Great Great 發行版,請刪除公司。 若要刪除公司,請執行下列動作:在 [設定] 功能表上,選取 [ 系統],然後選取 [公司 ] 以刪除公司。

  8. 拿掉資料庫。

    • 如果您使用 Microsoft SQL Server,請開啟 Enterprise Manager,展開伺服器名稱,展開 [資料庫],以滑鼠右鍵按下您在步驟 7 中刪除的公司資料庫,然後選取 [刪除]

    • 如果您使用 SQL Server 2000 Desktop Engine,請執行下列腳本從支持系統管理員控制台內移除資料庫,其中 TWO 是資料庫的名稱。

      DROP DATABASE TWO
      
  9. 重新建立公司資料庫和程式。 若要這樣做,請啟動 Microsoft Dynamics GP 公用程式,以 sa 使用者身分登入,然後在 [其他工作] 對話框中選取 [建立新公司]。

    注意事項

    使用與您在步驟 7 中刪除的公司名稱相同的公司名稱。

  10. 建立公司之後,必須截斷數據表。

    • 如果您使用 Microsoft SQL Server,請在查詢分析器中執行下列Truncate_Table_Company.sql腳本。

      /* Script to remove all data from all user tables in the company database */ SET QUOTED_IDENTIFIER OFF if exists (select * from sysobjects where name = 'RM_NationalAccounts_MSTR_FKC') ALTER TABLE dbo.RM00105 DROP CONSTRAINT RM_NationalAccounts_MSTR_FKC Go declare @tablename char(255) DECLARE t_cursor CURSOR for select "truncate table " + name from sysobjects where type = 'U' set NOCOUNT on open t_cursor FETCH NEXT FROM t_cursor INTO @tablename while (@@fetch_status <> -1) begin if (@@fetch_status <> -2) begin exec (@tablename) end FETCH NEXT FROM t_cursor into @tablename end DEALLOCATE t_cursor GO ALTER TABLE dbo.RM00105 ADD CONSTRAINT RM_NationalAccounts_MSTR_FKC FOREIGN KEY ( CPRCSTNM ) REFERENCES dbo.RM00101 ( CUSTNMBR ) GO
      
    • 如果您使用 SQL Server 2000 桌面引擎,請在支援系統管理員控制台中個別執行下列腳本。

      腳本 1

      SET QUOTED_IDENTIFIER OFF if exists (select * from sysobjects where name = 'RM_NationalAccounts_MSTR_FKC') ALTER TABLE dbo.RM00105 DROP CONSTRAINT RM_NationalAccounts_MSTR_FKC
      

      Script 2

      SET QUOTED_IDENTIFIER OFF declare @tablename char(255) DECLARE t_cursor CURSOR for select "truncate table " + name from sysobjects where type = 'U' set NOCOUNT on open t_cursor FETCH NEXT FROM t_cursor INTO @tablename while (@@fetch_status <> -1) begin if (@@fetch_status <> -2) begin exec (@tablename) end FETCH NEXT FROM t_cursor into @tablename end DEALLOCATE t_cursor
      

      Script 3

      ALTER TABLE dbo.RM00105 ADD CONSTRAINT RM_NationalAccounts_MSTR_FKC FOREIGN KEY ( CPRCSTNM ) REFERENCES dbo.RM00101 ( CUSTNMBR )
      
  11. 將數據移回公司資料庫。 若要這樣做,請開啟 BCPData 資料夾,然後按兩下 Copyin.bat 批處理檔。 執行此批處理檔會開始將數據移回公司資料庫的程式。 當數據移回資料庫時,系統會為每個數據表建立並驗證所有索引。

    注意事項

    當程式完成時,BCPData 資料夾會包含 .err 檔案。 如果其中任何一個 .err 檔案大於 0 KB,就不會成功匯入公司資料庫的數據。

其他步驟

如果您使用 BCP 程式來變更 Microsoft SQL Server 排序順序,則必須從 DYNAMICS 資料庫和所有公司資料庫大量複製數據。

注意事項

Microsoft 不支援變更 DYNAMICS 資料庫和公司資料庫的 Microsoft SQL Server 排序順序。 如需可為您變更 Microsoft SQL Server 排序順序的諮詢服務相關信息,請根據您是客戶或合作夥伴,使用下列其中一個選項:

客戶:
如需數據操作諮詢服務的詳細資訊,請連絡您的記錄合作夥伴。 如果您沒有記錄合作夥伴,請造訪 Microsoft Pinpoint 以識別合作夥伴。

合作 夥伴:
如需數據操作諮詢服務的詳細資訊,請連絡 Microsoft 諮詢服務 800-MPN-SOLVE。

若要這樣做,請遵循簡 一節中的步驟 1 到 11。 在步驟 10 中,您也必須截斷 DYNAMICS 資料庫。 若要這樣做,請使用下列其中一種方法:

  • 如果您使用 Microsoft SQL Server,請在查詢分析器中執行下列Truncate_Tables_Dynamics.sql腳本。

    /* ** **
    Truncate_Tables_Dynamics.sql 
    function: Will remove all data from all user tables in the DYNAMICS database
     ** */ 
    
    SET QUOTED_IDENTIFIER OFF 
    
    if exists (select * from sysobjects where name = 'orgEntity_SETP')
    ALTER TABLE dbo.ORG40100
    DROP CONSTRAINT orgEntity_SETP
    GO
    if exists (select * from sysobjects where name = 'orgRelation_MSTR')
    ALTER TABLE dbo.ORG00100
    DROP CONSTRAINT orgRelation_MSTR
    Go
    declare @tablename char(255) 
    
    DECLARE t_cursor CURSOR for
    select "truncate table " + name
    from sysobjects where type = 'U'
    
    set NOCOUNT on
    open t_cursor
    FETCH NEXT FROM t_cursor INTO @tablename
    while (@@fetch_status <> -1)
    begin
    if (@@fetch_status <> -2)
    begin
    exec (@tablename)
    end 
    
    FETCH NEXT FROM t_cursor into @tablename
    end
    
    DEALLOCATE t_cursor
    GO
    ALTER TABLE dbo.ORG40100 ADD 
    CONSTRAINT orgEntity_SETP FOREIGN KEY 
    (
    ENTYLVL
    ) REFERENCES dbo.ORG40000 (
    ENTYLVL
    )
    GO
    ALTER TABLE dbo.ORG00100 ADD 
    CONSTRAINT orgRelation_MSTR FOREIGN KEY 
    ( ENTITYID ) REFERENCES dbo.ORG40100 ( ENTITYID )
    
    GO 
    
  • 如果您使用 Microsoft SQL Server 2000 桌面引擎,請在支援系統管理員控制台中個別執行下列腳本。

    • 腳本 1

      if exists (select * from sysobjects where name = 'orgEntity_SETP') ALTER TABLE dbo.ORG40100 DROP CONSTRAINT orgEntity_SETP
      
    • Script 2

      if exists (select * from sysobjects where name = 'orgRelation_MSTR') ALTER TABLE dbo.ORG00100 DROP CONSTRAINT orgRelation_MSTR
      
    • Script 3

      declare @tablename char(255) 
      
      DECLARE t_cursor CURSOR for
      select "truncate table " + name
      from sysobjects where type = 'U'
      
      set NOCOUNT on
      open t_cursor
      FETCH NEXT FROM t_cursor INTO @tablename
      while (@@fetch_status <> -1)
      begin
      if (@@fetch_status <> -2)
      begin
      exec (@tablename)
      end 
      
      FETCH NEXT FROM t_cursor into @tablename
      end
      
      DEALLOCATE t_cursor
      
    • 腳本 4

      ALTER TABLE dbo.ORG40100 ADD 
      CONSTRAINT orgEntity_SETP FOREIGN KEY 
      (
      ENTYLVL
      ) REFERENCES dbo.ORG40000 (
      ENTYLVL
      )
      
    • Script 5

      ALTER TABLE dbo.ORG00100 ADD 
      CONSTRAINT orgRelation_MSTR FOREIGN KEY 
      ( ENTITYID ) REFERENCES dbo.ORG40100 ( ENTITYID )