如何使用大量複製程式 (BCP) 從一個資料庫匯出 Microsoft Dynamics GP 數據,並將數據匯入至新的資料庫
本文討論如何使用大量複製程式 (BCP) 來導出數據,以及使用 Microsoft Dynamics GP 或 Microsoft Business Solutions - Great Great 發行匯入數據。
適用于: Microsoft Dynamics GP
原始 KB 編號: 875179
簡介
備份您的公司資料庫。
將下列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 來安裝程式。
對資料庫執行文本,然後將結果儲存至批處理檔。 如果要執行這項操作,請依照下列步驟執行:
- 如果您使用查詢分析器,請選取結果窗格,然後在 [檔案] 功能表上選取 [另存新檔]。 建立名為 BCPData 的資料夾,將此檔案 命名Copyout.bat,然後選取 [ 儲存]。
- 如果您使用支持系統管理員控制台,請選取 [ 檔案],然後選取 [ 匯出]。 建立資料夾並將它命名為 BCPData。 將檔案 命名Copyout.bat。 然後選取 [儲存]。
將下列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 來安裝程式。
對資料庫執行文本,然後將結果儲存至批處理檔。
- 如果您使用查詢分析器,請選取結果窗格,然後在 [檔案] 功能表上選取 [另存新檔]。 建立資料夾並將它命名為 BCPData。 將檔案命名 Copyin.bat,然後選取 [ 儲存]。
- 如果您使用支持系統管理員控制台,請選取 [檔案 ],然後選取 [ 匯出]。 建立資料夾並將它命名為 BCPData。 將檔案 命名Copyin.bat。 然後選取 [儲存]。
執行 bcp 命令,將資料移出公司資料庫。 若要這樣做,請使用適當的方法。
針對 Microsoft SQL Server 2000 或 MSDE 2000
開啟 BCPData 資料夾。
按兩下 Copyout.bat 檔案。
注意事項
批處理檔會啟動 BCP 程式,以將資料從資料庫複製到文字檔。
開啟 BCPData 資料夾。
以滑鼠右鍵按兩下 Copyout.bat 檔案,然後選取 [編輯] 以在記事本或其他文字編輯器中開啟檔案
選取所有文字。 若要這樣做,請選取 [ 編輯],然後選取 [ 全選]。 或者,按 Alt+A。
將 Copyout.bat 檔案中的所有文字複製到剪貼簿。 若要這樣做,請選取 [ 編輯],然後選取 [ 複製]。 或者,按 Ctrl+C。
開啟 [命令提示字元] 視窗。 若要這樣做,請選取 [ 開始],選取 [ 執行],輸入 cmd,然後選取 [ 確定]。
將 Copyout.bat 檔案的內容貼到 [命令提示字元] 視窗中。 若要這樣做,請以滑鼠右鍵按兩下視窗,然後選取 [ 貼上]。
針對 Microsoft SQL Server 2005
開啟 BCPData 資料夾。
按兩下 Copyout.bat 檔案。
注意事項
批處理檔會啟動 BCP 程式,以將資料從資料庫複製到文字檔。
從 Microsoft Dynamics GP 中刪除公司。 若要這樣做,請以 sa 使用者的身分登入 Great Great 的。 選 取 [工具],指向 [安裝程式],指向 [ 系統 ],然後選取 [ 公司]。 選取查閱視窗以顯示列出的所有公司。 選取公司,然後選取 [ 刪除]。
注意事項
針對早於 Microsoft Great 發行者 8.0 的 Microsoft Great Great 發行版,請刪除公司。 若要刪除公司,請執行下列動作:在 [設定] 功能表上,選取 [ 系統],然後選取 [公司 ] 以刪除公司。
拿掉資料庫。
如果您使用 Microsoft SQL Server,請開啟 Enterprise Manager,展開伺服器名稱,展開 [資料庫],以滑鼠右鍵按下您在步驟 7 中刪除的公司資料庫,然後選取 [刪除]。
如果您使用 SQL Server 2000 Desktop Engine,請執行下列腳本從支持系統管理員控制台內移除資料庫,其中 TWO 是資料庫的名稱。
DROP DATABASE TWO
重新建立公司資料庫和程式。 若要這樣做,請啟動 Microsoft Dynamics GP 公用程式,以 sa 使用者身分登入,然後在 [其他工作] 對話框中選取 [建立新公司]。
注意事項
使用與您在步驟 7 中刪除的公司名稱相同的公司名稱。
建立公司之後,必須截斷數據表。
如果您使用 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 )
將數據移回公司資料庫。 若要這樣做,請開啟 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 )
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應