Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Vadim Deamant Member Откуда: Сообщений: 1 |
прошу помощи у форумчан !!! суть проблемы: есть два сервера, между ними настроена репликация. Проблема заключается только в синхронизации файлов. Создана дополнительная таблица на каждом сервере, куда с помощью триггера вносятся ID измененных / удаленных / новых файлах. Теперь мне необходимо изменить скрипт выборки и синхронизации файлов так, чтобы он руководствовался данными из этих таблиц... скрипт, который сейчас работает (криво) DECLARE @IDSELAM table (ID uniqueidentifier,CreationDate datetime) DECLARE @IDSToInsertElam table (ID uniqueidentifier) DECLARE @IDSToDeleteElam table (ID uniqueidentifier) DECLARE @IDSToInsertRzn table (ID uniqueidentifier) DECLARE @IDSToDeleteRzn table (ID uniqueidentifier) DECLARE @ID uniqueidentifier DECLARE @SyncDate datetime --PRINT 'Получаем коды и даты файлов с srvelam' INSERT INTO @IDSELAM SELECT ID,CreationDate FROM srvelam.ElamedFileDB.dbo.DataFiles --PRINT 'Находим дату последнего синхронизованный файл' SET @SyncDate= (SELECT Max(t1.CreationDate) FROM @IDSELAM as t1 JOIN ElamedFileDB.dbo.DataFiles as t2 ON t1.ID=t2.ID AND t1.CreationDate=t2.CreationDate) --PRINT 'Находим файлы которые надо добавить на SrvElam' INSERT INTO @IDSToInsertElam SELECT r.ID FROM ElamedFileDB.dbo.DataFiles r LEFT JOIN @IDSELAM e ON r.ID=e.ID WHERE e.ID IS NULL AND r.CreationDate>@SyncDate --PRINT 'Находим файлы которые надо удалить с SrvElam' INSERT INTO @IDSToDeleteElam SELECT e.ID FROM @IDSELAM e LEFT JOIN ElamedFileDB.dbo.DataFiles r ON r.ID=e.ID WHERE r.ID IS NULL AND e.CreationDate<@SyncDate --PRINT 'Находим файлы которые надо добавить на SrvRzn' INSERT INTO @IDSToInsertRzn SELECT e.ID FROM @IDSELAM e LEFT JOIN ElamedFileDB.dbo.DataFiles r ON r.ID=e.ID WHERE r.ID IS NULL AND e.CreationDate>@SyncDate --PRINT 'Находим файлы которые надо удалить с SrvRzn' INSERT INTO @IDSToDeleteRzn SELECT r.ID FROM ElamedFileDB.dbo.DataFiles r LEFT JOIN @IDSELAM e ON r.ID=e.ID WHERE e.ID IS NULL AND r.CreationDate<@SyncDate --PRINT 'Добавляем файлы на SrvElam' INSERT INTO srvelam.ElamedFileDB.dbo.DataFiles SELECT r.* FROM ElamedFileDB.dbo.DataFiles r JOIN @IDSToInsertElam ie ON r.ID=ie.ID --PRINT 'Удаляем файлы с SrvElam' DECLARE IDSDelElam CURSOR LOCAL FOR SELECT * from @IDSToDeleteElam OPEN IDSDelElam FETCH NEXT FROM IDSDelElam INTO @ID WHILE @@FETCH_STATUS=0 BEGIN заранее прошу прощенья, но в этом деле я новичок |
13 июн 13, 09:06 [14426261] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
|
||
13 июн 13, 10:24 [14426606] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |