powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не нашел способа получения текущего LSN в базе. подскажите.
10 сообщений из 10, страница 1 из 1
не нашел способа получения текущего LSN в базе. подскажите.
    #40047274
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно сабж.

Есть база с cdc процессом. И без возможности в структуру базы как то вмешиваться.

Хочется сделать снепшот нескольких таблиц на другой сервер, используя insert .. select, но с привязкой к текущему LSN.
Чтобы последовательно потом вписать скопированные данные с cdc данными.

Получается, что sys.fn_cdc_get_max_lsn() не подойдет, так как он заполняется "отложено", в процессе обработки лога транзакций, то есть идет с "опозданием" к последней зафиксированной транзакции в базе. Есть конечно вариант данные перетаскивать с Getdate(), и попозже вычислить правильный LSN по cdc.lsn_time_mapping и обновить .. но не очень нравится.

может есть другие варианты?
Заранее спасибо.
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40047288
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
select * from sys.dm_db_log_stats(db_id())
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40047337
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич
Код: sql
1.
select * from sys.dm_db_log_stats(db_id())



Спасибо!
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40047348
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dzianis,

почему вы не хотите сделать перенос данных на другой сервер, используя механизм сбора CDC данных? Так вы получите одну точку происхождения изменений данных и данные будут гарантированно согласованы.
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40047372
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Dzianis,

почему вы не хотите сделать перенос данных на другой сервер, используя механизм сбора CDC данных? Так вы получите одну точку происхождения изменений данных и данные будут гарантированно согласованы.


сложный вопрос. В двух словах и не ответить.
Заказчик придумал архитектуру и хочет наличие функции резервного "рестарта" когда в непрерывную цепочку CDC событий "вписывается" копия таблицы, как страховка на форс мажор, когда события из cdc почему то не перенесутся за другой сервер и образуется окно.
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40047378
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dzianis,

Это ни от чего не защитит, так как "железо" происхождения данных одно и то же, равно как и транспорт. Перестраховка явно избыточна и только ухудшает ситуацию. Ну да хозяин - барин.
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40047430
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Dzianis,

Это ни от чего не защитит, так как "железо" происхождения данных одно и то же, равно как и транспорт. Перестраховка явно избыточна и только ухудшает ситуацию. Ну да хозяин - барин.



Тут добавлю.
Исходная база с CDC на одном сервере, данные из cdc переносятся ssis на другой. на котором уже и идет их "обработка". Смысл обработки это по CDC собрать денормализованные объекты, которые закинуть в третью базу, на которой уже будет пахать система отчетов.
Глядя на заказчика, я, в общем, допускаю вариант, когда процесс может упасть на пару дней и никто не отреагирует на сообщения в логах. За эти пару дней "хвост" в cdc таблицах подчистится и образуется разрыв в последовательности.
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40062041
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению применить решение не смог.
Формат LSN 00008FFF:000018FF:000F так и не перевел корректно к формату BINARY(10), которую юзает cdc. (
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40062058
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dzianis,

двоичные данные в Intel формате хранятся в последовательности младший - старший байты, а отображаются как старший - младший. Может в этом дело.
...
Рейтинг: 0 / 0
не нашел способа получения текущего LSN в базе. подскажите.
    #40062063
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dzianis
К сожалению применить решение не смог.
Формат LSN 00008FFF:000018FF:000F так и не перевел корректно к формату BINARY(10), которую юзает cdc. (


https://github.com/Hubbitus/sql/commit/4ccf96492f2aba9796ccaecb1b74e9ba53a45895#diff-e495aa591f98a29c28153735379ad6fdR22
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не нашел способа получения текущего LSN в базе. подскажите.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]