Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在数据库端检测两个相同数据库之间的修改?_Php_Sql_Sql Server_Triggers_Detection - Fatal编程技术网

Php 如何在数据库端检测两个相同数据库之间的修改?

Php 如何在数据库端检测两个相同数据库之间的修改?,php,sql,sql-server,triggers,detection,Php,Sql,Sql Server,Triggers,Detection,我的问题是: 我有一个数据库(数据库1),它包含所有初始数据(数据X)。并且只能由应用程序写入。(SQL Server) 我有第二个数据库(数据库2),它包含修改后的数据(数据y) 该应用程序用于插入、修改和删除数据库1中的数据。有一个脚本可以检测更改并更新数据库2。但我无法访问该脚本的源代码 我要做的是检测数据库1上的更改(就像脚本所做的那样),将此信息存储在另一个数据库中,然后向用户发送通知 问题是,我不知道如何检测这些变化,如果是在php例程中,我本来可以做到的。此外,我可以复制表格并

我的问题是:

  • 我有一个数据库(数据库1),它包含所有初始数据(数据X)。并且只能由应用程序写入。(SQL Server)

  • 我有第二个数据库(数据库2),它包含修改后的数据(数据y)

  • 该应用程序用于插入、修改和删除数据库1中的数据。有一个脚本可以检测更改并更新数据库2。但我无法访问该脚本的源代码
我要做的是检测数据库1上的更改(就像脚本所做的那样),将此信息存储在另一个数据库中,然后向用户发送通知

问题是,我不知道如何检测这些变化,如果是在php例程中,我本来可以做到的。此外,我可以复制表格并进行比较,但这将是太沉重了

也许有一种方法可以使用Listener和触发器,但我对此还没有任何想法

如果有人能帮我,那就太好了:)


这是我必须做的输出的一个例子

新通知:

位置已从x(数据库1中的数据)更改为y(更新数据)


嗯,有一些方法

在表上设置触发器以记录所有操作

使用标识符查找不同的行,然后执行您选择的任何操作


使用诸如red gate data comparer之类的第三方工具,该工具在比较所有配置的表后为您提供脚本。

您的表是否有任何字段指示字段创建和上次更新的时间?@DanBracuk:是的,我有一个datetime字段非常感谢您的帮助。第一种方法听起来很有趣,你能多告诉我一点吗?这是否意味着我必须为每个相关的更改在DB1上创建触发器,记录操作(包括:数据的旧状态和应用更改的新状态?),然后用新更改更新数据库?所以我可以从日志中检索数据,执行通知例程并清除日志?谢谢你的工具,它也是一个有趣的工具!您可以在各个表上创建触发器,然后记录这些值,并随时更新数据库1表中的refereid和数据库2表中的update或insert。对于事务量有限的数据库来说,这可能没问题,但随着事务量的增加,您必须找到处理它的方法。还要检查sql中的复制和日志传送是否有帮助。非常感谢!事实上,我有一个很大的数据库要处理,服务提供给了大量的用户。我被要求用最简单的方法来做这件事。好的,我来查一下:)顺便说一下,我只有对数据库2的只读访问权限。唯一可以在那里编写的是第三方脚本,它根据在db1上所做的更改更新db2。这是定期更新。