本文介绍如何使用大容量复制过程(BCP)导出数据和导入数据,方法是使用 Microsoft Dynamics GP 或 Microsoft Business Solutions - Great Plains。
适用于: Microsoft Dynamics GP
原始 KB 数: 875179
简介
备份公司数据库。
将以下CreateBulkCopyOut.sql脚本复制并粘贴到 SQL 查询分析器Microsoft。
/* 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 替换为公司数据库的名称。
将 密码 替换为 sa 密码。
将 SERVERNAME 替换为Microsoft SQL Server 实例的名称。
注意
若要打开查询分析器,请选择“ 开始”,指向“ 程序”,指向 Microsoft SQL Server,然后选择“ 查询分析器”。
注意
如果使用 Microsoft SQL Server 2000 桌面引擎(也称为 MSDE 2000),请在Microsoft 支持部门管理员控制台中运行该语句。 若要打开支持管理员控制台,请选择“ 开始”,指向“ 程序”,指向 “Microsoft支持管理员控制台”,然后选择“ 支持管理员控制台”。 支持管理员控制台需要单独的安装。 可以使用 Great Plains 安装 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 替换为公司数据库的名称。
将 密码 替换为 sa 密码。
将 SERVERNAME 替换为 SQL Server 实例的名称。
注意
若要打开查询分析器,请选择“ 开始”,指向“ 程序”,指向 Microsoft SQL Server,然后选择“ 查询分析器”。
注意
如果使用 SQL Server 2000 桌面引擎,请在支持管理员控制台中运行该语句。 若要打开支持管理员控制台,请选择“ 开始”,指向“ 程序”,指向 “Microsoft支持管理员控制台”,然后选择“ 支持管理员控制台”。 支持管理员控制台需要单独的安装。 可以使用 Great Plains 安装 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 Plains。 选择 “工具”,指向 “设置”,指向“ 系统 ”,然后选择“ 公司”。 选择查找玻璃以显示列出的所有公司。 选择公司,然后选择“ 删除”。
注意
对于早于Microsoft大平原 8.0 的Microsoft大平原版本,请删除公司。 若要删除公司,请执行以下作:在“设置”菜单上,选择“ 系统”,然后选择“ 公司 ”以删除公司。
删除数据库。
如果使用 Microsoft SQL Server,请打开 Enterprise Manager,展开服务器名称,展开 “数据库”,右键单击在步骤 7 中删除的公司数据库,然后选择“ 删除”。
如果使用 SQL Server 2000 桌面引擎,请通过运行以下脚本(其中 TWO 是数据库的名称)从支持管理员控制台中删除数据库。
DROP DATABASE TWO
重新创建公司数据库和过程。 为此,请启动Microsoft Dynamics GP Utilities,以 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
脚本 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
脚本 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 数据库的 SQL Server 排序顺序和公司数据库的Microsoft。 有关可用于更改 SQL Server 排序订单Microsoft的咨询服务的信息,请使用以下选项之一,具体取决于你是客户还是合作伙伴:
客户数:
有关数据操作咨询服务的详细信息,请联系记录合作伙伴。 如果没有正式合作伙伴,请访问 Microsoft Pinpoint 来找到合作伙伴。
合作伙伴:
有关数据操作咨询服务的详细信息,请通过 800-MPN-SOLVE 联系Microsoft咨询服务。
为此,请按照 “简介 ”部分中的步骤 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
脚本 2
if exists (select * from sysobjects where name = 'orgRelation_MSTR') ALTER TABLE dbo.ORG00100 DROP CONSTRAINT orgRelation_MSTR
脚本 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 )
脚本 5
ALTER TABLE dbo.ORG00100 ADD CONSTRAINT orgRelation_MSTR FOREIGN KEY ( ENTITYID ) REFERENCES dbo.ORG40100 ( ENTITYID )