并再一次训问题(上运行的斧头2009年和sql服务器2008年r2):这是完全一点的时候,当插入或更新的数据集中存储有关的数据库?

目的是为了叫一个存储程序sql服务器转移数据从斧头表(例如inventtable)到另一个(不产生与训)表。执行存储的过程via odbc训,从上一个表方法(甚至之后,超级()call)触发器存储的过程,但该数据只是添加或修改斧头没有找到同时选择通过短信(select*from dbo。inventtable).

唯一的地方,我知道,但那里的数据已经存储在数据库的方法对数据源的关于形式,但这将是安静的丑陋,因为该数据可以编辑过的n形式从斧头。

所以有一种方法来把电话桌上而不是在形式'的数据源?

谢谢你的提示,提前!

有帮助吗?

解决方案

斧头的数据是"保存"在数据库点 doInsert()/doUpdate()super() 电话在 insert()/update() 方法。

但是,正如杰提到的,该记录将不会看到其他事务(除非明确允许肮脏的/未提交选择).所以它可能看不到你的存储程序。

我不会建议调用存储程序 insert()/update() 无论如何,因为这会影响性能,而你现在根据的又一个数据库还活着!

该方向走:

  1. 登录入/更新在一个单独的表格,用于这一目的(考虑使用标准的数据库记录).
  2. 从其他数据库定期监视日志的新记录(说每15秒)。
  3. 做你插入/更新中的其他数据库的基础上加入日志和斧头表。

日志表的布局(一个数百万):

  • 日志类-1=insert,2=更新,3=删除
  • LogStatus-0=不转移,1=下转移,2=转移,3=错误???
  • RefRecId-RecId的斧头记录
  • RefTableId-TableId的斧头表(如果你需要记录超过一个表)
  • RefCompanyId公司的斧头记录(也许表是共享的几乎)

建议:

  1. 使用RecId作为加入关键的并且记住以使RecId指数上斧头表。
  2. 记得选择 DATAAREAID (必须阐明这种方式)。
  3. 更新 LogStatus 1之前加入和2之后加入并更新。

其他提示

在插入()

把呼叫的超级后()调用或update()表的方法是做正确的地方,但除非你在存储过程中做了一个未提交的读select语句将看不到数据,直到在AX中的事务被提交后。

你能经由存储过程使用从X ++写入到外部表ODBC连接,而不是直接间接?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top