Axapta AX 2009通过管理导入/导出与数据刷新的表保留

Axapta AX 2009通过管理导入/导出与数据刷新的表保留,axapta,dynamics-ax-2009,data-import,data-export,Axapta,Dynamics Ax 2009,Data Import,Data Export,我只是一个SQL的家伙,所以请原谅我这是一个愚蠢的问题,或者在错误的地方 我关于将数据从生产环境刷新到较低环境的说明让我进入AX客户端,并通过点击鼠标将8个表备份到一个文件中: 可雇用 系统用户配置文件 系统用户信息 SysCompanyUserInfo 肮脏的 雇员类型 用户组列表 用户信息 然后,我停止AOS并做我最擅长的事情——使用一些SQL将31个表中的数据复制到一个安全的地方,执行数据库还原,将数据从安全的地方复制回31个表中。然后启动AOS,同步字典,最后通过AX客户机导入8个表

我只是一个SQL的家伙,所以请原谅我这是一个愚蠢的问题,或者在错误的地方

我关于将数据从生产环境刷新到较低环境的说明让我进入AX客户端,并通过点击鼠标将8个表备份到一个文件中:

  • 可雇用
  • 系统用户配置文件
  • 系统用户信息
  • SysCompanyUserInfo
  • 肮脏的
  • 雇员类型
  • 用户组列表
  • 用户信息
然后,我停止AOS并做我最擅长的事情——使用一些SQL将31个表中的数据复制到一个安全的地方,执行数据库还原,将数据从安全的地方复制回31个表中。然后启动AOS,同步字典,最后通过AX客户机导入8个表(都像点击一样)

我可以从命令行同步。我可以从命令行通过sql保留31个表。我可以从命令行按正确的顺序启动和停止AOS。但我无法完成AX导出/导入表这一步,在三种环境中,所有这些尖锐的点击都让我恼火

最后一个问题:在客户端的导出/导入过程中会发生什么,如果有的话,仅仅像处理其他31个表一样处理这8个表是不可能的?这是dict同步无法解决的问题吗?有没有一种方法可以告诉我们它也可以做什么?在X++中有没有一种简单的方法来编写导出/导入代码?我已经掌握了sysStartupCmd,以及如何从ax32.exe-StartupCmd中实现这些功能,但老实说,作为我的母语,SQL对我来说要容易得多


谢谢你读到这些

您描述的过程对于更新过程来说似乎有些不寻常,但在某些上下文中是有意义的

正如在评论中所述,您基本上是在为较低的环境保留数据。您在注释中描述的过程使用旧数据更新现有记录,同时保留新数据。如果您想通过SQL尝试此操作,则需要将其作为upsert写入(因为在更新现有记录的同时可能会创建新记录)。看起来这些表都以某种方式与用户相关,因此,如果从生产环境到较低级别的环境中存在不同的用户集,则此过程是有意义的,这并不罕见,尤其是在受SOX监管的环境中。在这种情况下,数据字典同步实际上不会做任何事情——它基本上只是更新SQL中的表模式以匹配AX中存储的定义。因为这个模式没有改变,所以什么也不会发生

对于您提到的其他(31)个表,听起来您在做更多的表替换(因此在插入新数据之前会截断表,或者在其他情况下会丢弃/忽略还原过程中的数据),这就是为什么该过程可能与8个用户表不同的原因

在任何情况下,为了直接回答您的问题,我不知道有任何现成的流程可以为您实现自动化。
StartupCmd=
标志是查找该文件的逻辑位置,但唯一可用的导入命令是XPO(代码)文件。如果您想让流程自动化,则需要创建一个新类,该类扩展了
SysStartupCmd
,并调用通常手动执行的相同函数。这并不困难,但需要进行一些研究来确定所使用的命令和参数。您可以查看
SysStartupCmdAOTImport
类,了解它的结构。导入过程似乎是由
SysDataImport
类控制的,因此请查看该类以模拟用户输入或查看该过程的确切功能


如果你正在寻找一个可供选择的(自动化)过程,考虑到当我对我们的环境进行数据更新时(我们有一些每天更新的环境,一些更新一个月一次,其他时候我们觉得需要,所有100%个自动化的)我们只需运行一个SQL脚本,在备份恢复后更新或创建必要的记录。这些值基本上是硬编码到脚本中的,但因为它们没有改变,所以这没什么大不了的。与您的相比,这种技术的缺点是,如果我们有一个用户只需要访问非生产环境,那么他们必须首先在生产环境中(禁用),然后脚本在下次更新目标环境时更新必要的值。此外,您的系统开发人员/管理员需要确保传达需要对脚本进行的任何更改(例如,如果需要更改新的表值或新的用户权限集),这会给流程增加一些开销。

执行点击操作时,您具体在做什么?这听起来像是在导出XPO,它只是表模式,而不是实际数据。非常确定它实际上是数据。“转到管理>定期>数据导出/导入>导出到,选择*用户定义组,单击导出到按钮,将导出保存到以后可以访问的位置(文件类型二进制),当询问是否要导出一个或多个与用户相关的表时,单击确定按钮。”*-8个表来自说明如何创建用户定义组的部分。我刚刚注意到它创建了一个DEF和一个DAT文件。导入说明(压缩):转到“管理”>“定期”>“数据导出/导入”>“导入”,选择先前导出的数据文件,单击“高级”选项卡,确保选中“包括系统和共享表”复选框,确保选中“使用记录ID压缩”复选框未选中,确保选中“更新现有记录”单选按钮,并确保索引设置为“连续更新索引…”,单击确定按钮,在“删除以下表格”窗口中,确保没有表格