这更像是一个建议问题。
- SQL SERVER 2008 / SQL SERVER 2005 / HAMACHI / DELPHI 2010 -
我正在为我们拥有的少数餐馆开发POS系统(4),每个地点都有自己的SQL Server数据库,就在2天前,我可以使用HAMACHI为VPN创建连接并创建喜欢的服务器(Father Google)帮助我完成所有这些),我现在可以访问远程位置的所有数据。我也拥有这台计算机中的所有数据库(我将构建一台真正的服务器计算机)。我在每个位置的“服务器”中创建了一个数据库,因此更容易创建报告和所有位置。
我没有创建一个客户端 - 服务器模型并且去了一个厚的,因为互联网非常不稳定,我真的不需要实时更新。
我想每隔30分钟或每小时创建一次服务器更新,我仍然想知道它。
我几乎没有问题。
(如果你知道的话)hamachi是一个可靠的VPN,它有它的问题(有哪些),或者你推荐另一种方式而不是它?
进行更新时(通过更新我的意思是将新记录插入服务器),我应该从客户端还是从服务器执行更新?
我在匹配时使用MERGE进行更新,并在不匹配时插入,但我不知道这是否是最佳方式,因为它扫描所有记录,只有243,272条记录的表需要12分钟才能完成完成,或者如果我应该选择PK高于服务器中最后一个PK的recods并进行合并。基于你的 体验最好的方式(即使不使用合并)......
这是一个使用的合并代码:
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
任何推荐都是受欢迎的,请记住,我是所有这些远程连接的东西,但我愿意继续学习。谢谢!!
答案 0 :(得分:1)
有很多方法可以做你想要的。我建议你做一些关于SQL Server复制的研究。这是一种“内置”方式,使数据库自己复制(发布)到中心区域(订户)。它有点复杂但不需要自定义代码,它应该可以更容易地添加更多数据库。有很多方法可以实现它,您只需要记住您的要求 - 在VPN上延迟30分钟 - 选择哪种方法。即你不需要使用镜像,因为你不需要你的数据是最新的