1

这更像是一个建议问题。

--SQL SERVER 2008/SQL SERVER 2005/HAMACHI/德尔福 2010--

我为我们拥有的几家餐馆开发了一个 POS 系统 (4),每个地点都有自己的 SQL Server 数据库,就在 2 天前,我可以使用 HAMACHI 为 VPN 创建一个连接并创建喜欢的服务器(谷歌神父帮助我有了所有这些),我现在可以访问远程位置的所有数据。我还拥有这台计算机中的所有数据库(我将构建一个真正的服务器计算机)。我在“服务器”中为每个位置创建了一个数据库,这样更容易创建报告和所有内容。

我没有创建客户端-服务器模型,而是选择了一个厚的模型,因为互联网非常不稳定,我真的不需要实时更新。

我想每 30 分钟或每小时创建一次服务器更新,我仍在努力。

我有几个问题。

  1. (如果你知道的话)hamachi 是一个可靠的 VPN,它有问题吗?

  2. 进行更新时(更新是指将新记录插入服务器),我应该从客户端还是从服务器执行更新?

  3. 我正在使用 MERGE 在匹配时更新并在不匹配时插入,但我不知道这是否是最好的方法,因为它扫描所有记录并且只有 243,272 条记录的表需要 12 分钟才能完成,或者我应该选择 PK 高于服务器中最后一个 PK 的记录并进行合并。根据您的经验,最好的方法是(即使不使用合并)...

这是我使用的合并代码:

SET IDENTITY_INSERT pedidos ON

MERGE INTO pedidos C
USING(
    SELECT id, id_pedido, id_articulo, cant, fecha, id_usuario, [local], estado
    FROM [SENDERO].[PVBC].[DBO].[pedidos]) TC
ON (C.id =TC.id)
WHEN MATCHED THEN
UPDATE 
    SET C.id_pedido=TC.id_pedido,
        C.id_articulo=TC.id_articulo,
        C.cant=TC.cant,
        C.fecha=TC.fecha,
        C.id_usuario=TC.id_usuario,
        C.[local]=TC.[local],
        C.estado=TC.estado

WHEN NOT MATCHED THEN
    INSERT (id, id_pedido, id_articulo, cant, fecha, id_usuario, [local], estado)
    VALUES (id, id_pedido, id_articulo, cant, fecha, id_usuario, [local], estado);

SET IDENTITY_INSERT pedidos OFF

欢迎任何建议,请记住,我对所有这些远程连接都是新手,但我愿意继续学习。谢谢!!

4

1 回答 1

1

有很多方法可以做你想做的事。我建议您对 SQL Server 复制进行一些研究。这是使数据库将自身复制(发布)到中心区域(订阅者)的“内置”方式。它有点复杂,但不需要自定义代码,它应该可以更轻松地添加更多数据库。有很多方法可以实现它,您只需要记住您的要求 - 在 VPN 上延迟 30 分钟 - 在选择哪种方法时。即你不需要使用镜像,因为你不需要你的数据是最新的

于 2014-03-13T22:55:25.257 回答