【发布时间】:2014-02-26 22:12:27
【问题描述】:
这更像是一个建议问题。
--SQL SERVER 2008/SQL SERVER 2005/HAMACHI/德尔福 2010--
我正在为我们拥有的几家餐厅 (4) 开发一个 POS 系统,每个位置都有自己的 SQL Server 数据库,就在 2 天前,我可以使用 HAMACHI 为 VPN 创建一个连接并创建喜欢的服务器(Google 之父帮我解决了所有这些问题),我现在可以访问远程位置的所有数据。我还拥有这台计算机中的所有数据库(我将构建一个真正的服务器计算机)。我在“服务器”中为每个位置创建了一个数据库,以便更轻松地创建报告和所有内容。
我没有创建客户端-服务器模型,而是选择了一个厚的,因为互联网非常不稳定,我真的不需要实时更新。
我想每 30 分钟或每小时创建一次服务器更新,我还在努力。
我有几个问题。
(如果你知道的话)hamachi 是一个可靠的 VPN,它有问题吗(最常见的问题),还是你推荐另一种方式?
进行更新时(更新是指将新记录插入服务器),我应该从客户端还是从服务器执行更新?
我正在使用 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
欢迎任何建议,请记住,我对所有这些远程连接都是新手,但我愿意继续学习。谢谢!!
【问题讨论】:
-
有很多方法可以做你想做的事。我建议您对 SQL Server 复制进行一些研究。这是使数据库将自身复制(发布)到中心区域(订阅者)的“内置”方式。它有点复杂,但不需要自定义代码,它应该可以更轻松地添加更多数据库。有很多方法可以实现它,您只需要记住您的要求 - 在 VPN 上延迟 30 分钟 - 在选择哪种方法时。即你不需要使用镜像,因为你不需要你的数据是最新的。
-
非常感谢您,我一直在等待其他意见,但您的意见确实帮助了我,我搜索了服务器复制并开始着手处理。您能否将您的评论作为答案,以便我将其标记为正确答案?谢谢!
标签: sql-server-2008 sql-server-2005 vpn remote-server hamachi