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'
для обновления,будет проще использовать связанный сервер.Вы можете обратиться к Здесь для получения дополнительной информации.
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