SQL更新远程服务器的最佳方法?

时间:2014-02-26 22:12:28

标签: sql-server-2008 sql-server-2005 vpn remote-server hamachi

这更像是一个建议问题。

- SQL SERVER 2008 / SQL SERVER 2005 / HAMACHI / DELPHI 2010 -

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

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

我想每隔30分钟或每小时创建一次服务器更新,我仍然想知道它。

我几乎没有问题。

  1. (如果你知道的话)hamachi是一个可靠的VPN,它有它的问题(有哪些),或者你推荐另一种方式而不是它?

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

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

  4. 这是一个使用的合并代码:

    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
    

    任何推荐都是受欢迎的,请记住,我是所有这些远程连接的东西,但我愿意继续学习。谢谢!!

1 个答案:

答案 0 :(得分:1)

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