TSQL - DB之间的数据传递

时间:2018-06-13 06:55:29

标签: sql-server database tsql

TSQL - 数据在DB之间传递

您好,

如主题中所示,我告诉我如何在两个不同的软件之间进行数据传输。 每个都有一个SQL Server DB。他们很可能是在同一台服务器上,所以只有不同的时间,我可以访问它们。如果数据库位于不同的网络上,我将实现VPN。

实施例: 在“DB_a”的“anagrafica”表格中,我有客户的个人资料(姓名,姓氏,出生,性别......) 在“DB _b”的“anagrafica”表中,我还没有这个注册表。

- 然后我想从“DB_a.anagrafica”传递到“DB_b.anagrafica”这条记录,显然是id MAX(DB_b.id),因为在表“DB_b。注册表”中已有记录亲戚。 (CASE INSERT);

  • 或者,如果在DB_a.anagrafica上更新数据,则必须在“DB_b.anagrafica”字段中执行更新;

  • 如果必须在“DB_b”的弱表中插入新记录,例如“DB_b.pagamenti”表中有一个唯一的id和一个指向强个人数据表id的外部键; (也许弱表中的数据可能还有两个字段start_date和data_fine),此表为1:N

- 两个DB由两个不同的软件公司编写,因此很可能字段类型可能不同。 (字符,数字,日期和时间等..)然后是CAST,CONVERT等。

  • 最后还可能有一个返回数字来完成整个es。来自“DB_b”。注册表到“DB_a.anagrafica”。

那说有一个已经存在的软件让你处于两个DB的中间是一个交换? (最有可能使用Windows调度程序进行调度)。或者是商店程序。

你有更多指示可以给我吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

这种情况下最重要的问题是:是否有领先的系统?

在这种情况下最困难的是:处理并发。

对于您的方案,回答您的初始问题(“TSQL - 数据库之间的数据传递”)似乎相当容易:

如果两个数据库都可以“看到”彼此,只需implement a linked server。您可以read about OPENQUERY并点击本页底部的链接。

典型的方法是

  • 将更改直接转移到目标(如果是领先系统)
    使用时间戳查找并发更改

  • 将所有更改转移到临时表(一个用于两个或一个用于每个) 使用任何适当的工具(T-SQL或您喜欢的任何编程语言)定期阅读这些/这些表,处理业务规则并相应地更新两个系统。

您可能会考虑通过标准复制链接的两个系统中具有相同结构的登台表。

由于你的系统相似但不相同,所以不会有任何魔法自动奇迹工具; - )