Я написал клиент, который использует SyncFramework для координации консолидации данных в приложении хранилища хранилища хабов и спикеров. При обработке транзакций синхронизации инфраструктура синхронизации обновляет указанную таблицу привязки со значением @@ DBTS, указывая, когда последняя синхронизация была обработана и загружена на сервер. Я хотел бы предложить в рамках этого сценария возможность разрешить одному клиенту передавать данные от имени одного из других.@@ DBTS и BInaryFormatter
Это будет использоваться в тех случаях, когда один клиент может не иметь возможности связаться со складом; его база данных может быть восстановлена и синхронизирована клиентом, который имеет доступ к хранилищу (заменяется как резервная копия базы данных на дисках DVD или USB-носителей).
Проблема с этой теорией заключается в том, что без установки SentAnchor в клиентской базе данных при извлечении моментального снимка при следующем выполнении этой процедуры вся база данных реплицируется во второй раз.
То, что я хотел бы сделать, когда я захватить снимок базы данных клиента, обновить его SentAnchor поэтому в следующий раз, когда я захватить копию синхронизации рамки будет знать его SentAnchor , как будто он действительно общался с сервер.
Итак, мой первый импульс состоял в том, чтобы просто обновить таблицу привязок, установить SentAnchor в @@ DBTS, однако проблема с этим - это структура синхронизации вставляет одно и то же значение в другом формате, сначала запускает его через BinaryFormatter.
Такое же внутреннее значение, разные заголовки, и когда я пытаюсь просто обновить значение @@ DBTS, ошибки SyncFramework пытаются преобразовать их из того формата, который он, как ожидается, сам установил.
То, что я хотел бы сделать, устанавливается с помощью инструкции TSQL, того же формата для @@ DBTS, что использует инфраструктура синхронизации; Я не хочу писать приложение для выполнения одного оператора SQL, если это можно сделать в инструкции, которая уже выполняется для создания резервной копии.
Что-то вроде ...
USE MyDB
GO
BACKUP DATABASE MyDb
TO DISK = 'F:\01032012MyDb.bak'
WITH FORMAT,
NAME = '20120103 Full Backup of MyDb'
GO
UPDATE Anchor SET SentAnchor = @@DBTS
GO
По существу замена @@ DBTS выше с тем, что нужно, чтобы получить то же самое значение в правильном fromat, что SyncFramework будет использовать.
Серверы 2008R2 Express.
Да, это почти параллельно с другим вопросом, который я недавно опубликовал относительно очистки после резервного копирования. Возможно, произошли изменения между резервным копированием и установкой этого значения. Проблема в том, что эта система не была разработана для автономной синхронизации, и я пытаюсь перестроить метод, с помощью которого можно сделать это, не поднимая стабильные системы, которые работают в Интернете. Я переосмысливаю проект в целом, я отправлю обратно, если будущие проблемы связаны с этим, спасибо за комментарий. – Sabre