Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
Есть SSIS, который УТРОМ обновляет 6 таблиц БД1.
Надо ВЕЧЕРОМ в определенный день реплицировать эти 6 таблиц в БД2.

Сейчас это делается, не буду пока говорить как, но ИМХО криво.

Вопрос:
как ПРАВИЛЬНО настроить репликацию (желательно скриптом)?

скрипт нужен для более гибкой настройки репликации.
18 ноя 15, 01:15    [18432870]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Подумал над вопросом и .... Хотя бы и рад помочь. Гибкий скрипт вы можете писать всю жизнь в зависимости от условий. Весь ньюанс в слове "гибкий".
18 ноя 15, 02:48    [18433002]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
МуМу
Подумал над вопросом и .... Хотя бы и рад помочь. Гибкий скрипт вы можете писать всю жизнь в зависимости от условий. Весь ньюанс в слове "гибкий".


ok! уточняю задачу.

Допустим (числа месяца даны УСЛОВНО)
обновление таблиц в БД1 происходит НЕ регулярно, а 5го и 13го числа месяца.
ЕСЛИ произошло 5го, то реплика должна быть вечером 10го
ЕСЛИ 13го - то вечером в последний день месяца

В общем проблема в том, что стандартным шедулером нельзя настроить реплику,
НО я уверен, что нет ничего невозможного)))
Осталось узнать как достичь этого )))
18 ноя 15, 08:52    [18433263]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
В общем проблема в том, что стандартным шедулером нельзя настроить реплику,

А вы что собственно репликацией называете то ?
Просто свой обмен данными или ту репликацию, что в хелпе описана ?

И причему тут шедулер ?
18 ноя 15, 09:26    [18433376]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
RegisteredUser,

А почему нельзя стандартным?
Вы можете как-то узнать что таблицы обновились? Т.е. в самих таблицах есть какие-то подсказки, что туда добавлены новые данные?
Если нет, то я бы настроил. Это может быть дата, либо сохранение № последней записи где-нибудь в отдельной табличке или еще что-нибудь. Кстати, если у Вас есть ключевое поле ))) то можно сравнивать 2 таблицы, даже если они на разных серверах.

Дальше работает "шедулер" (я так понял это SQL Server Agent).
Он может проверять наличие новых записей каждый день/вечер/час и затем тупо insert into .... (col1, col2, col3) select .... from.

Не?
18 ноя 15, 09:45    [18433483]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Если SSIS, то можно использовать change tracking механизм, если правильно помню.
18 ноя 15, 11:10    [18434119]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
1. приложу скриншот
2. Insert НЕ катит

К сообщению приложен файл. Размер - 128Kb
18 ноя 15, 11:11    [18434124]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
1. приложу скриншот

Вы спрашиваете о том, как вам запустить snapshot.exe в какой-то произвольно рассчитанный момент времени ?
18 ноя 15, 11:16    [18434162]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
Glory
RegisteredUser
1. приложу скриншот

Вы спрашиваете о том, как вам запустить snapshot.exe в какой-то произвольно рассчитанный момент времени ?


ну да!
репликация ДОЛЖНА происходить НЕ регулярно, а по довольно странному алгоритму.

дату и время начала репликации можно вычислить.
вот я и спрашиваю,
как сделать так, чтобы репликация
- происходила в нужное мне время
- и настраивалась через SSIS
18 ноя 15, 11:46    [18434386]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
ну да!
репликация ДОЛЖНА происходить НЕ регулярно, а по довольно странному алгоритму.

дату и время начала репликации можно вычислить.
вот я и спрашиваю,
как сделать так, чтобы репликация
- происходила в нужное мне время
- и настраивалась через SSIS

Например, пусть ваш SSIS последним шагом создает job с одиночным шагом запуска snapshot.exe с одиночным запуском на определенную дату/время и опционно с самоудалением после завершения.
18 ноя 15, 11:50    [18434425]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
Glory
RegisteredUser
ну да!
репликация ДОЛЖНА происходить НЕ регулярно, а по довольно странному алгоритму.

дату и время начала репликации можно вычислить.
вот я и спрашиваю,
как сделать так, чтобы репликация
- происходила в нужное мне время
- и настраивалась через SSIS

Например, пусть ваш SSIS последним шагом создает job с одиночным шагом запуска snapshot.exe с одиночным запуском на определенную дату/время и опционно с самоудалением после завершения.


)))) НЕЕ!
это еще хуже чем сейчас реализовано
вопрос был в том КАК ТАКИЕ СИТУАЦИИ СДЕЛАТЬ ПРАВИЛЬНО?
18 ноя 15, 12:13    [18434592]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
)))) НЕЕ!
это еще хуже чем сейчас реализовано

Один вызов процедуры с параматерами это фу ?

RegisteredUser
вопрос был в том КАК ТАКИЕ СИТУАЦИИ СДЕЛАТЬ ПРАВИЛЬНО?

А правильно это как по-вашему ?
18 ноя 15, 12:15    [18434603]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
НЕ ХОТЕЛ показывать текущую реализацию,
НО видимо придется это сделать.

в следующем сообщении опишу как это происходит и в чем (имхо) кривизна этого подхода
18 ноя 15, 12:15    [18434608]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
в следующем сообщении опишу как это происходит и в чем (имхо) кривизна этого подхода

Вы лучше напишите, что такое "правильно"
18 ноя 15, 12:16    [18434616]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
RegisteredUser
вопрос был в том КАК ТАКИЕ СИТУАЦИИ СДЕЛАТЬ ПРАВИЛЬНО?
Что сделать, такие сложные расписания/алгоритмы запуска?

Ставите расписание на каждый день, вечером.
Первым шагом пакета делаете проверку нужных условий, и потом, после соответствующей записи в лог, делаете выход, либо делаете импорт.

Как вариант, это всё можно сделать проверочным шагом джоба, но, во первых, из джоба (вне пакета) у вас может не быть доступа к нужным источником данных, во вторых, в джобах нет условного выполнения, и такие вещи нужно делать генерацией ошибки, что неудобно, т.к. в логах джоба будут ненужные ошибки.
18 ноя 15, 12:20    [18434650]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
RegisteredUser
Glory
пропущено...

Вы спрашиваете о том, как вам запустить snapshot.exe в какой-то произвольно рассчитанный момент времени ?


ну да!
репликация ДОЛЖНА происходить НЕ регулярно, а по довольно странному алгоритму.

дату и время начала репликации можно вычислить.
вот я и спрашиваю,
как сделать так, чтобы репликация
- происходила в нужное мне время
- и настраивалась через SSIS


... поэтому откажитесь от репликации в пользу Сhange Tracking.
18 ноя 15, 12:27    [18434699]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
Показываю текущую реализацию.

Скрин №1

К сообщению приложен файл. Размер - 121Kb
18 ноя 15, 13:00    [18434911]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
№2

Script

DECLARE @JobName nvarchar(100), @JobName2 nvarchar(100), @DT nvarchar(10), @Time nvarchar(10), @SchdId int

Select 
 @JobName = 'VROA-DB1-pbReplDB1DB2-1'
,@JobName2 = 'VROA-DB1-pbReplDB1DB2-VROA-3'
,@Time = '114111'
,@DT = '20151118'
,@SchdId = -1

select @SchdId = schedule_id 
from msdb.dbo.sysjobs as j 
INNER JOIN msdb.dbo.sysjobschedules js (NOLOCK) ON j.job_id = js.job_id
where j.[name] = @JobName -- it is 'VROA-DB1-pbReplDB1DB2-1'

EXEC msdb.dbo.sp_update_schedule
    @schedule_id = @SchdId,
    @enabled = 1,
    @freq_type=4, 
    @freq_interval=1,
    @active_start_date = @DT,
    @active_start_time = @Time,
    @active_end_date = @DT;


if (ltrim(rtrim(@JobName)) <> '')
begin
	EXEC msdb.dbo.sp_update_job @job_name = @JobName, @enabled=1
end

if (ltrim(rtrim(@JobName2)) <> '')
begin
	EXEC msdb.dbo.sp_update_job @job_name = @JobName2, @enabled=1
end
18 ноя 15, 13:01    [18434922]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
Показываю текущую реализацию.

Скрин №1

Вы предлагаете из этой кучи криншотов узнать, что дял вас есть "правильно настроить репликацию" ?
18 ноя 15, 13:02    [18434927]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
№3
Скрин №2

К сообщению приложен файл. Размер - 92Kb
18 ноя 15, 13:03    [18434941]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
№2

Script

А вы знаете, что шедул может быть и вида Once ?
И что имя ему можно задать тоже постоянное ?
18 ноя 15, 13:04    [18434952]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
Glory
RegisteredUser
Показываю текущую реализацию.

Скрин №1

Вы предлагаете из этой кучи криншотов узнать, что дял вас есть "правильно настроить репликацию" ?


я показываю ТЕКУЩУЮ РЕАЛИЗАЦИЮ,
и ПОТОМ
напишу ГДЕ там нехорошо
18 ноя 15, 13:04    [18434957]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
я показываю ТЕКУЩУЮ РЕАЛИЗАЦИЮ,
и ПОТОМ
напишу ГДЕ там нехорошо

И нахрена нужна эта информация ?
Как она поможет узнать ваши критерии для "хорошо" ?
18 ноя 15, 13:08    [18434978]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
RegisteredUser
Member

Откуда:
Сообщений: 639
Glory
RegisteredUser
№2

Script

А вы знаете, что шедул может быть и вида Once ?


ЗНАЮ! это НЕ подходит


Glory
RegisteredUser
№2

Script


И что имя ему можно задать тоже постоянное ?


а вот ИМЕННО то, что имена джобов меняются при дропе репликации и ее восстановлении - это имхо и проблема текущей реализации!
Проблема как раз была в том, что периодически эту реплику дропали на кизяк,
а когда восстанавливали, то забывали поменять в скрипте имя джоба.
Именно поэтому я и спрашивал: КАК ПОСТУПАЮТ ПРАВИЛЬНО в таких ситуациях.
ИМХО такая хаковая реализация шедулирования реплики не совсем комильфо.
Поэтому и решил обратиться к мнеию форума

Буду признателен, если расскажете, как оставить имена джобов репликации постоянными даже при дропе всей реплики.
18 ноя 15, 13:11    [18435004]     Ответить | Цитировать Сообщить модератору
 Re: SISS: Как правильно настроить репликацию?  [new]
Glory
Member

Откуда:
Сообщений: 104751
RegisteredUser
ЗНАЮ! это НЕ подходит

Когда мы узнаем, что ПОДХОДИТ ?
18 ноя 15, 13:14    [18435022]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить