powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / синхронизация набора таблиц между бд
30 сообщений из 30, показаны все 2 страниц
синхронизация набора таблиц между бд
    #39950365
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
синхронизация набора таблиц между бд - есть ли такой механизм?
есть БД покупная ненормализованная
полей с датой последнего изменения там нет, row_version тоже нет
никаких ддл там делать нельзя

таблиц в БД штук 1000, надо синхронизировать штук 100 на другую БД
надо их синхронизировать с БД отчетов
все таблицы синхронизировать не надо и нельзя, там очень много инфы


пните куда почитать
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39950367
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,
можно использовать
Но придется написать условия для этих 100 таблиц
MERGE (Transact-SQL)

Выполняет операции вставки, обновления или удаления для целевой таблицы на основе результатов соединения с исходной таблицей. Например, можно синхронизировать две таблицы путем вставки, обновления или удаления строк в одной таблице на основании отличий, найденных в другой таблице.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39950384
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
синхронизация набора таблиц между бд - есть ли такой механизм?
...
пните куда почитать
Репликация, наверное.
Выбор реализации нужно начинать с определения требований.
Можно "синхронизовать" репликацией, триггерами, пакетом SSIS, командами T-SQL из джоба через линке-сервер, в общем, вариантов много.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39950385
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
Что такое мёдж и апдейт я знаю

Но хотелось узнать, есть ли какие не ручные механизмы, типа голденгейт в Оракле
И сколько они стоят
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39950399
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Microsoft SQL Server есть Change Data Capture (CDC). Может, Вам подойдет
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39950468
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39950481
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
спасибо

админы отпинали (


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

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

в VS есть сравнение схем баз данных, с его помощью можно создать недостающие таблицы. Заполнить из также можно сравнением данных, но если данных много, то скрипты получатся гигантскими и ком, скорее всего, их не переварит.
ага
Спасибо
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39951174
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
Но хотелось узнать, есть ли какие не ручные механизмы, типа голденгейт в Оракле


Почему не использовать тот же golden gate?
Есть еще аналог от информатики.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953426
Glebanski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Merge можно сгенерить. Вы же знаете откуда взять PK к таблицам. Если они есть конечно...

А данные можно сравнить например по хэшу, заранее его кудато записав (пусть даже и в темп таблицу, если ддл совсем нельзя)
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953429
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПК есть, и я их знаю
Но как обновлять хеш, идею не просек
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953470
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вам нужно синхронизировать таблицы, или просто периодически перетаскивать данные с одной базы в другую?
И какой объем передаваемых данных? Гигабайт, 10, 100, Терабайт, больше?
Если данных, например, до 10 Гб, и данные нужно не чаще, чем раз в 15 минут целиком таскать с одного сервера на другой, то проще не морочиться, а выгружать все данные целиком через bcp в натуральный формат, грузить их bulk-ком в рядомстоящие таблицы на сервере-приемники, а в конце делать alter table switch этих рядомстоящих таблиц в продуктивные.

Идеи использовать CDC, или его эрзацы, типа добавления полей типа timestamp в отслеживаемые таблицы, или, чего доброго - добавление таблиц ключ/хеш на стороне источника, и периодические перерассчеты, чтобы выделить дельту данных, выгрузить и сделать merge на приемнике - они имеют смысл только тогда, когда объемы данных и каналы связи не позволяют быстро выгрузить и передать сразу всё.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953479
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster
Если данных, например, до 10 Гб, и данные нужно не чаще, чем раз в 15 минут целиком таскать с одного сервера на другой, то проще не морочиться, а выгружать все данные целиком через bcp в натуральный формат, грузить их bulk-ком в рядомстоящие таблицы на сервере-приемники, а в конце делать alter table switch этих рядомстоящих таблиц в продуктивные.
Зачем все эти bcp? В снапшот-репликации уже всё сделано, если нужно синхронизировать периодически. Или в транзакционной, если нужно поддерживать "одинаковость" постоянно.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953481
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
uaggster
Если данных, например, до 10 Гб, и данные нужно не чаще, чем раз в 15 минут целиком таскать с одного сервера на другой, то проще не морочиться, а выгружать все данные целиком через bcp в натуральный формат, грузить их bulk-ком в рядомстоящие таблицы на сервере-приемники, а в конце делать alter table switch этих рядомстоящих таблиц в продуктивные.
Зачем все эти bcp? В снапшот-репликации уже всё сделано, если нужно синхронизировать периодически. Или в транзакционной, если нужно поддерживать "одинаковость" постоянно.
админы отказали в снапшот репликации
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953485
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
alexeyvg
пропущено...
Зачем все эти bcp? В снапшот-репликации уже всё сделано, если нужно синхронизировать периодически. Или в транзакционной, если нужно поддерживать "одинаковость" постоянно.
админы отказали в снапшот репликации
А, понял. Тогда да, придётся писать самодельную репликацию.

Собственно, она так и работает: данные через bcp из таблиц в файлы, файлы передаём, данные из файлов в таблицы.
Так хорошо, как МС, не написать, но в принципе ничего невозможного.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953488
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
andreymx
пропущено...
админы отказали в снапшот репликации
А, понял. Тогда да, придётся писать самодельную репликацию.

Собственно, она так и работает: данные через bcp из таблиц в файлы, файлы передаём, данные из файлов в таблицы.
Так хорошо, как МС, не написать, но в принципе ничего невозможного.
да я думал
Через ажур дата фактори, это у нас стандарт
Но смущает количество таблиц, которое растёт
Вчера ещё добавилась одна
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953516
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

похоже, у вас наихудший сценарий поддержания баз в актуальном состоянии. Оптимальным было бы развертывание баз из проекта ил и использование скриптов развертывания от поставщика. Попробуйте добиться, все же, получения скриптов изменений. Если вы базы копируете нелегально - это другой вопрос, здесь придется попотеть.

Для синхронизации таблиц достаточно удобно использовать SSIS пакеты - их легко дополнять новыми таблицами, колонками. Где-то придется хранить списки отгруженных ключей. Например, ключами для куч могут являться вычисленные хэш-суммы строк. Копирование будет не слишком эффективным из-за затрат на сравнение изменений. В пакетах можно организовать параллельные выполнения потоков, это ускорит сравнение и загрузку.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953619
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
alexeyvg
пропущено...
А, понял. Тогда да, придётся писать самодельную репликацию.

Собственно, она так и работает: данные через bcp из таблиц в файлы, файлы передаём, данные из файлов в таблицы.
Так хорошо, как МС, не написать, но в принципе ничего невозможного.
да я думал
Через ажур дата фактори, это у нас стандарт
Но смущает количество таблиц, которое растёт
Вчера ещё добавилась одна
А что меняет количество таблиц?
Пишите код, который копирует таблицы из списка, и всё, будет копировать.

По сложности реализации тут главное, что нужно не поддерживать синхронизацию в реальном времени (свою мерж реликацию писать совсем грустно), а достаточно просто копировать, по расписанию.

Тут ещё Владислав Колосов упоминал SSIS, это было бы ещё проще (пакет можно создать мастером импорта-экспорта), но при каждом изменении таблиц придётся пакет править, это вам вряд ли подойдёт.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39953621
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
да я думал
Через ажур дата фактори, это у нас стандарт
Но смущает количество таблиц, которое растёт
Вчера ещё добавилась одна
Самое удивительное в этой истории то, что админы запрещают реплликацию.
Самодельную не запрещают, а встроенную внутри СУБД запрещают.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39954086
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
andreymx
да я думал
Через ажур дата фактори, это у нас стандарт
Но смущает количество таблиц, которое растёт
Вчера ещё добавилась одна
Самое удивительное в этой истории то, что админы запрещают реплликацию.
Самодельную не запрещают, а встроенную внутри СУБД запрещают.


оффтоп On
а че не ясно то ?
в 1 случае по косякам вопросы будут к ним
в 2-м случае к том кто писал самоделку

оффтоп Off
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39954087
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
alexeyvg
пропущено...
Самое удивительное в этой истории то, что админы запрещают реплликацию.
Самодельную не запрещают, а встроенную внутри СУБД запрещают.


оффтоп On
а че не ясно то ?
в 1 случае по косякам вопросы будут к ним
в 2-м случае к том кто писал самоделку

оффтоп Off
Ага.

Тут ещё обсуждали преимущество узкой специализации в "Серьёзных Настоящих Компаниях" VS "дба всё-в-одном" в самоделкиных.
А потом хардварные админы кивают на сисадминов, те на DBA, а те на программистов. Да, ещё сетевики, они тоже ни при чём.
Ничего не рабготает, все молодцы, и никто не виноват.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39954095
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Гулин Федор
пропущено...


оффтоп On
а че не ясно то ?
в 1 случае по косякам вопросы будут к ним
в 2-м случае к том кто писал самоделку

оффтоп Off
Ага.

Тут ещё обсуждали преимущество узкой специализации в "Серьёзных Настоящих Компаниях" VS "дба всё-в-одном" в самоделкиных.
А потом хардварные админы кивают на сисадминов, те на DBA, а те на программистов. Да, ещё сетевики, они тоже ни при чём.
Ничего не рабготает, все молодцы, и никто не виноват.
нас щаз как раз интегрировали в такой бизнес процесс разработки и сопровождения
Идеологов много, а спросить не с кого
Главный вопрос - на чьей же стороне сегодня мячик
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39954527
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

ответ-то простой - надо ориентироваться в смежных специализациях, чтобы понять и показать с доказательствами - на чьей стороне проблема. Потому что достаточно какому-то из специалистов оказаться недостаточно компетентным или достаточно ленивым, чтобы решение забуксовало. Или необходим многопрофильный системный аналитик, понимающий картину в целом.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39954532
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

Я сам написал утилиту, которая такое делает -- она сама генерит SSIS пакеты и целевые таблицы.
...
Рейтинг: 0 / 0
синхронизация набора таблиц между бд
    #39981645
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять всплыл вопрос

почитал SnapShot Replication
https://docs.microsoft.com/ru-ru/sql/relational-databases/replication/snapshot-replication?view=sql-server-ver15

Использование репликации моментальных снимков самой по себе наиболее приемлемо, когда выполняется одно или несколько следующих условий:
  • Данные изменяются редко.
  • Допустимо на определенный период времени иметь копии данных, устаревших по отношению к издателю.
  • Репликация небольших объемов данных.
  • Большой объем изменений производится за короткий период времени.
Но у меня:

  • Данные изменяются редко.
  • - данные изменяются часто

  • Допустимо на определенный период времени иметь копии данных, устаревших по отношению к издателю.
  • - не больше получаса

  • Репликация небольших объемов данных.
  • - небольшие объемы данных - это имеются в виду только изменения, или весь объём реплицируемых таблицы?

  • Большой объем изменений производится за короткий период времени.
  • - данные меняются понемногу, но постоянно (заявки сервис деск)

    ************

    получается, мне этот механизм не подойдёт?
    ...
    Рейтинг: 0 / 0
    синхронизация набора таблиц между бд
        #39981719
    Владислав Колосов
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    andreymx,

    скорее всего не подойдёт.
    ...
    Рейтинг: 0 / 0
    синхронизация набора таблиц между бд
        #39981744
    andreymx
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Владислав Колосов
    andreymx,

    скорее всего не подойдёт.
    спасибо

    а есть что-то штатное? или проще велосипед свой построить?

    цель: синхронизация 150 таблиц между серверами, количество таблиц и их структура меняется обычно в сторону увеличения
    количество строк в таблицах - скажем, от 1 строки до 10 млн
    полей CreatedDate / ChangedDate нет, но обещали посмотреть в сторону реализации

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

    AlwaysOn слишком сложно для таких требований, так что без ручной настройки не обойтись. Какие-то нестандартные решения приведут к усложнению обслуживания и специального обучения новых сотрудников.
    ...
    Рейтинг: 0 / 0
    синхронизация набора таблиц между бд
        #39982800
    Гулин Федор
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    andreymx
    Владислав Колосов
    andreymx,

    скорее всего не подойдёт.
    спасибо

    а есть что-то штатное? или проще велосипед свой построить?

    цель: синхронизация 150 таблиц между серверами, количество таблиц и их структура меняется обычно в сторону увеличения
    количество строк в таблицах - скажем, от 1 строки до 10 млн
    полей CreatedDate / ChangedDate нет, но обещали посмотреть в сторону реализации

    расписание - раз в полчаса - час
    более детально не требуется


    Самописный скрпит добавления 1 поля CreatedDate - апдейченного при Create/Update
    и тригера обновлюящие это поле
    с проверкой чтоб не падало если его нет.
    ну и полная заливка 1 раз само собой

    по идее 1-2 скрпита накатывающее это поле и тригеры должно хватить - динам. скл

    Минусы - с делете не прокатит
    опять же вдруг там большие батчи вставки - может и чуть подтарамаживать из за тригера

    ps с делете я видел варинат когда все ПК были из 1 числового поля
    тогда тригер на делете пишущий в таблицу

    table pk_id
    и эта таблица потом читалась и удалялись соответвсующие записи из таблиц.
    ...
    Рейтинг: 0 / 0
    30 сообщений из 30, показаны все 2 страниц
    Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / синхронизация набора таблиц между бд
    Целевая тема:
    Создать новую тему:
    Автор:
    Закрыть
    Цитировать
    Найденые пользователи ...
    Разблокировать пользователей ...
    Читали форум (0):
    Пользователи онлайн (0):
    x
    x
    Закрыть


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