题
并再一次训问题(上运行的斧头2009年和sql服务器2008年r2):这是完全一点的时候,当插入或更新的数据集中存储有关的数据库?
目的是为了叫一个存储程序sql服务器转移数据从斧头表(例如inventtable)到另一个(不产生与训)表。执行存储的过程via odbc训,从上一个表方法(甚至之后,超级()call)触发器存储的过程,但该数据只是添加或修改斧头没有找到同时选择通过短信(select*from dbo。inventtable).
唯一的地方,我知道,但那里的数据已经存储在数据库的方法对数据源的关于形式,但这将是安静的丑陋,因为该数据可以编辑过的n形式从斧头。
所以有一种方法来把电话桌上而不是在形式'的数据源?
谢谢你的提示,提前!
解决方案
斧头的数据是"保存"在数据库点 doInsert()
/doUpdate()
或 super()
电话在 insert()/update()
方法。
但是,正如杰提到的,该记录将不会看到其他事务(除非明确允许肮脏的/未提交选择).所以它可能看不到你的存储程序。
我不会建议调用存储程序 insert()/update()
无论如何,因为这会影响性能,而你现在根据的又一个数据库还活着!
该方向走:
- 登录入/更新在一个单独的表格,用于这一目的(考虑使用标准的数据库记录).
- 从其他数据库定期监视日志的新记录(说每15秒)。
- 做你插入/更新中的其他数据库的基础上加入日志和斧头表。
日志表的布局(一个数百万):
- 日志类-1=insert,2=更新,3=删除
- LogStatus-0=不转移,1=下转移,2=转移,3=错误???
- RefRecId-RecId的斧头记录
- RefTableId-TableId的斧头表(如果你需要记录超过一个表)
- RefCompanyId公司的斧头记录(也许表是共享的几乎)
建议:
- 使用RecId作为加入关键的并且记住以使RecId指数上斧头表。
- 记得选择
DATAAREAID
(必须阐明这种方式)。 - 更新
LogStatus
1之前加入和2之后加入并更新。
其他提示
在插入()
把呼叫的超级后()调用或update()表的方法是做正确的地方,但除非你在存储过程中做了一个未提交的读select语句将看不到数据,直到在AX中的事务被提交后。
你能经由存储过程使用从X ++写入到外部表ODBC连接,而不是直接间接?
不隶属于 StackOverflow