Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
servs1c Member Откуда: Сообщений: 1 |
Добрый день! 1. Есть база 1С. 2. Периодически приложение 1С строит запросы на языке 1С к данным. Эти запросы делают выборку строго за определенный период (например за последний месяц). 3. Есть отдельная база(Base1) на том же SQL Server что и база 1С. 4. После 2. регламентное задание 1С выгружает данные напрямую в Base1 построчно, предварительно удаляя все записи в таблицах Base1 за выгружаемый период. Суть проблемы в том, что на время выгрузки(20-30 минут) недоступны данные из Base1. Было принято решение использовать механизм CDC: 1. Создаю аналог Base1, называю Base2. 2. Включаю CDC на Base2. 3. Данные из 1С так же выгружаются как и раньше, но в Base2. 4. После выгрузки вызываю хранимку(напрямую из кода 1С), которая обрабатывает изменения из Base2 fn_cdc_get_net_changes_моя_таблица, и добавляет/удаляет/изменяет только нужные строки в Base1. Таким образом данные Base1 будут доступны постоянно. В результате пришел к следующему: В fn_cdc_get_net_changes_моя_таблица попадает много лишней информации. Т.е. при неизменности данных в отслеживаемых полях отражается факт действий над строками. Как можно выбрать только те строки Base2, в которых при обновлении изменились значения в отслеживаемых полях? @supports_net_changes = 1 |
13 сен 12, 17:00 [13159719] Ответить | Цитировать Сообщить модератору |
Критик Member Откуда: Москва / Калуга Сообщений: 34998 Блог |
Как все сложно. Если версия MS SQL поддерживает секционирование, то выгружаете в табличку рядом с нужной, затем делаете переключение секций. |
13 сен 12, 17:04 [13159745] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |