Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
SIMPLicity_ Member Откуда: (((@))) Сообщений: 8834 |
Есть довольно-таки простая задача: На рабочем сервере в рабочей базе что-то происходит. Хочу каждые три-пять минут забирать информацию с рабочего сервера на свой и уже оттуда делать "отчёты". Не хочу репликацию - там некоторые таблицы в минимальном варианте модифицируются. В какую сторону смотреть что бы нагрузка на основной сервер была минимальной? Целостность/непротиворечивость данных на вторичном сервере в "отчётной базе" не нужна. Даже если дублирование раз в год/квартал/месяц/неделю отвалится на полдня,- то это не сильно страшно. Дифференцированные бэкапы в силу высокой частоты обновлений не приветствуются. Пока думаю насчёт растянутого по времени копирования таблиц типа truncate table MyTable; Insert into MyTable (field1, field2...) select field1, field2... from LinkedServer.WorkDataBase.dbo.SourceTable WITH (NOLOCK). Но есть два момента: 1. есть длииииинные таблицы (новые строки в них я чётко вижу, а вот удаление старых гарантированно на 100% "засечь" не могу) 2. есть всё-таки связанные первичными/внешними ключами таблицы (и это как раз "длиииинные таблицы) которые лучше вытаскивать попарно,- что не есть хорошо при их объёме. Хочу понять КАК реализуются механизмы (ну, типа, always on, снэпшоты ....) хотя бы примерно, что бы оценить нагрузку на основной сервер. Модель восстановления - simple (но это не принципиально) Исходный сервер - MSSQL 2008 R2 , целевой 2012 или любой другой (не принципиально). С рабочим (исходным) MSSQL Server (и Win Server) могу много чего делать (в рамках разумного), с отчётным сервером (как с сиквелом, так и с виндой вообще) - всё что можно через терминальное окно локальному (и не только) администратору. -------------------------- No ROM Basic... |
26 апр 18, 20:21 [21372010] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37198 |
|
||
27 апр 18, 03:01 [21372482] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7494 |
Буду краток. https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql?view=sql-server-2017 |
||
27 апр 18, 05:44 [21372504] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1291 |
Ога merge одной нехилой таблицы в другую нехилую таблицу... это как раз для тредстартера. ЗЫ. Тредстартер, по факту, хочет самопальную репликацию. Т.е. чудак, но на известную букву. Ну, флаг ему в руки. |
||||
27 апр 18, 08:44 [21372625] Ответить | Цитировать Сообщить модератору |
L_argo Member Откуда: Сообщений: 1454 |
па сабжу: Чтобы минимизировать обмен, нужно четко знать, что забирать. Нужно как-то помечать измененные и удаленные записи. Только тогда можно уменьшить трафик. Удаление можно логгировать триггером (логгировать только список ключей). |
27 апр 18, 09:44 [21372736] Ответить | Цитировать Сообщить модератору |
londinium Member Откуда: Киев Сообщений: 1195 |
Change Data Capture (CDC)+ SSIS-пакеты для перевозки данных |
27 апр 18, 10:15 [21372810] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9683 |
|
||
27 апр 18, 10:30 [21372859] Ответить | Цитировать Сообщить модератору |
Eleanor Member Откуда: Сообщений: 3253 |
Снэпшоты - это настроить зеркалирование и периодически делать на зеркальном сервере снэпшоты БД. Чтобы не было задержек при фиксации транзакций на основном сервере, настраивается асинхронное зеркалирование. Зеркало будет отставать всего на несколько секунд, но снэпшоты будет отражать состояние БД на момент их снятия. Поэтому придется периодически снимать новые, и решать как при этом не затронуть уже запущенные отчеты. Снятие снэпшотов на основной сервер влиять не должно, влияет только само зеркалирование. Все записи из лога транзакций сжимаются и отправляются на зеркало. Можно пустить этот трафик по другому сетевому интерфейсу, чтобы не мешать основной нагрузке. Дополнительные плюсы зеркалирования: - настраивается проще любого другого средства высокой доступности - появится резервная копия БД, куда можно переключиться в случае сбоя основного сервера - битые страницы на основном сервере автоматически восстанавливаются с зеркального
Кроме Change Data Capture можно использовать еще и Change Tracking. CT есть даже в Standard версии Sql сервера. |
||||
27 апр 18, 12:15 [21373356] Ответить | Цитировать Сообщить модератору |
SIMPLicity_ Member Откуда: (((@))) Сообщений: 8834 |
Ээээ.... это точно "ТА" ссылка? Для мерджа нужны как минимум две таблицы и одна из них должна быть высосана с сервера-источника. Вопрос - как "легко" высосать таблицу. а не как найти "прибитые" записи.... ![]() |
||||
27 апр 18, 19:44 [21375238] Ответить | Цитировать Сообщить модератору |
SIMPLicity_ Member Откуда: (((@))) Сообщений: 8834 |
Это пройденный этап и ни чего страшного в подобном нет. Репликация в MS SQL Server изначально "самопальная" была (я по общему принципу, - в версиях 6.5, 7 и 2000, - добавлялись (при необходимости) поля, вешались триггера и проч... ) - и ни кого это особо не смущало. Вопрос был не совсем так поставлен.. |
||||
27 апр 18, 19:47 [21375242] Ответить | Цитировать Сообщить модератору |
SIMPLicity_ Member Откуда: (((@))) Сообщений: 8834 |
Ок. Покопаюсь подробнее в этом направлении... |
||||||
27 апр 18, 19:49 [21375244] Ответить | Цитировать Сообщить модератору |
Барсук-копатель Member [заблокирован] Откуда: Московский парк Сообщений: 94884 |
Service Broker |
28 апр 18, 09:07 [21376105] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1291 |
Вопрос поставлен бездарно. Репликация транзакций - тоже репликация. А триггеров нема... https://docs.microsoft.com/ru-ru/sql/relational-databases/replication/transactional/transactional-replication?view=sql-server-2017 |
||||
28 апр 18, 15:10 [21377363] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2397 |
хочу кататься, но не хочу покупать автомобиль. его надо иногда ремонтировать. |
||
28 апр 18, 15:23 [21377408] Ответить | Цитировать Сообщить модератору |
SIMPLicity_ Member Откуда: (((@))) Сообщений: 8834 |
низачот: есть каршаринг и есть такси - надо только платить деньги и иметь права (для первого варианта) ... |
||||
28 апр 18, 18:48 [21377871] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37198 |
|
||||
28 апр 18, 19:17 [21377927] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |