AX 2009 Import/Export 通过管理 vs table 保存数据刷新

AX 2009 Import/Export via Administration vs table preservation for data refresh

我只是一个 SQL 的人,所以请原谅我这是一个愚蠢的问题,还是问错了地方。

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

然后,我停止 AOS 并做我最擅长的事情 -- 使用一些 SQL 将数据从 31 个表复制到一个安全的地方,进行数据库恢复,将数据复制回从安全的地方开始的 31 张桌子。然后启动 AOS,同步字典,最后通过 AX 客户端导入 8 个表(都是尖头点击式的)。

我可以从命令行同步。我可以从命令行通过 sql 保留 31 个表。我可以从命令行以正确的顺序启动和停止 AOS。但是我无法执行此 AX Export/Import 表步骤,并且在三个环境中所有尖锐的点击都激怒了我。

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

感谢阅读所有内容!

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

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

你提到的其他 (31) tables,听起来你正在做更多的 table 替换(所以 table 是 t运行cated 在插入新数据之前,否则恢复过程中的数据是 discarded/ignored),这就是该过程可能与 8 个用户 tables 不同的原因。

无论如何,为了直接回答您的问题,我不知道有任何开箱即用的流程可以为您自动执行此操作。 StartupCmd= 标志是寻找它的合乎逻辑的地方,但唯一可用的导入命令是 XPO(代码)文件。如果你想要一些东西来自动化这个过程,你需要创建一个新的 class 来扩展 SysStartupCmd 并调用你通常手动执行的相同功能。这并不困难,但需要进行一些研究才能确定所使用的命令和参数。您可以查看 SysStartupCmdAOTImport class 以了解其结构。导入过程似乎是由 SysDataImport class 控制的,因此请查看它以模拟用户输入或确切地了解该过程的作用。

如果您正在寻找替代(自动化)流程,请考虑当我对我们的环境进行数据更新时(我们有一些环境每天更新,一些每月更新几次,其他的每当我们感觉需要它,全部 100% 自动化),我们只是 运行 一个 SQL 脚本,在备份恢复后更新或创建必要的记录。这些值本质上是硬编码到脚本中的,但由于它们不会改变,所以没什么大不了的。与你的技术相比,这种技术的缺点是,如果我们有一个用户只需要访问非生产环境,他们必须首先在生产环境中(禁用),然后脚本下次更新必要的值目标环境已更新。此外,您的系统 developers/administrators 需要确保传达任何需要对脚本进行的更改(例如,如果需要更改新的 table 值或一组新的用户权限),这会增加一些开销。