我想将数据从离线数据库同步到在线数据库。目前,我在某些条件下使用查询执行该操作。但是,同步后在离线数据库中编辑的数据将不会在下一次同步中再次同步到在线。有什么简单的方法可以更新在线数据库中的编辑数据。 我当前的查询如下所示:
ul {
text-align: center;
display: inline;
padding: 0;
width: 50%;
position: fixed;
top: 0;
left: 50%;
margin: 0 0 0 -25%;
list-style: none;
}
我的在线数据库服务器不允许我执行复制,因为我没有这样做的权限。唯一的办法是通过这样的查询。
谢谢
答案 0 :(得分:0)
But data that are edited in offline database after syncing will not be synced again to online in next sync
您需要在离线数据库的另一列中标识正在编辑的数据。通常,您可以使用UpdatedDate
列。每当编辑数据时,此UpdatedDate
都会使用当前日期和时间进行更新。如果您的应用程序可以处理此问题,那就很好了。如果没有,您可以使用AFTER UPDATE
触发器来处理。
然后,您的sync
查询也需要检查UpdatedDate
。
DECLARE @LastSyncDate AS DATETIME
DECLARE @CurrentSyncDate AS DATETIME
SELECT @CurrentSyncDate = GETDATE()
SELECT @LastSyncDate = LastSyncDate
FROM [CrushMate].[dbo].[Sync]
-- the INSERT
INSERT INTO OPENQUERY([103.21.58.192], 'SELECT * FROM [amurajbg_ss].[dbo].[AccLedgers]')
SELECT *
FROM [CrushMate].[dbo].[AccLedgers]
WHERE CreatedDate BETWEEN @LastSyncDate AND @CurrentSyncDate
AND Status = 'True'
对于更新,使用链接服务器会更容易。您可以参考Here了解更多信息。
UPDATE R
SET . . . .
FROM [CrushMate].[dbo].[AccLedgers] A
INNER JOIN [RemoteServer].[amurajbg_ss].[dbo].[AccLedgers] R
ON A.pk_col = R.pk_col
WHERE A.UpdatedDate BETWEEN @LastSyncDate AND @CurrentSyncDate