Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Репликация изменения для XML схемы поля.  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
Налажена и работает репликация транзакций с издателя на подписчик.
Изменения схем данных - включены репликацию.
Появилась задача: изменить XML схему одного поля, участвующего в этой репликации.

Команда (1) выполненая на издателе
ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn XML NOT NULL

без проблем транслируется и выполняется на подписчике - всё OK.
(В профайлере виден список команд выполняемых на подписчике по сбросу XML схемы с поля)

А вот при выполнении команды (2)
ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn XML(CONTENT [dbo].[MyShema]) NOT NULL

на подписчике ничего не происходит.
(В профайлере на долю секунды дергается ползунок как будто появился новый лог и тут же исчезает - никаких команд в итоге, в логе не появляется)

Эта же команда (2) руками выполненая на подписчике без проблем выполняется.

Вопросы:
Как заставить транслироваться команду (2) с издателя на подписчик?
В какую сторону копать?

select @@version
-- Подписчик:
Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 
	Feb 20 2014 20:04:26 
	Copyright (c) Microsoft Corporation
	Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

-- Издатель:
Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 
	Feb 20 2014 20:04:26 
	Copyright (c) Microsoft Corporation
	Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
28 июн 17, 13:26    [20596552]     Ответить | Цитировать Сообщить модератору
 Re: Репликация изменения для XML схемы поля.  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
Дополнительно выяснил что команда (2) по приходу на подписчик изменяется в комманду (1)

То есть на издателе я выполняю команду (2):
ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn XML(CONTENT [dbo].[MyShema]) NOT NULL



А на подписчик приходит по сути (1):
if exists (select * from syscolumns where id = object_id(N'[dbo].[MyTable]') and name = N'MyColumn') 
ALTER TABLE [dbo].[MyTable]  ALTER COLUMN [MyColumn] xml NOT NULL


Вопрос:
Как заставить репликацию отправлять подписчику команду с указанием схемы?
28 июн 17, 16:56    [20597477]     Ответить | Цитировать Сообщить модератору
 Re: Репликация изменения для XML схемы поля.  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
См. описание schema_option в статье документации по sp_addarticle.
Там есть бит, отвечающий за репликацию XML-схем.
28 июн 17, 17:36    [20597625]     Ответить | Цитировать Сообщить модератору
 Re: Репликация изменения для XML схемы поля.  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
invm
См. описание schema_option в статье документации по sp_addarticle.
Там есть бит, отвечающий за репликацию XML-схем.


Да всё понял, - нашел этот параметр. Большое спасибо!

Чисто спортивный интерес остался:
А выставить этот параметр на уровне мастеров настройки репликации - невозможно?
28 июн 17, 18:04    [20597733]     Ответить | Цитировать Сообщить модератору
 Re: Репликация изменения для XML схемы поля.  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
Отвечаю сам себе (может кому нибудь пригодится в будущем, может кто опровергнет).

Прочитал я про @schema_option
https://msdn.microsoft.com/ru-ru/library/ms173857(v=sql.120).aspx
значение 0x2000000 (XML schema collections bound to xml columns are not replicated)
Соответствует параметру "Copy XML XSD" в свойствах репликации
Изменение его:
declare 
 @schema_option binary(8)  = 0x000000000803509F
,@mask  bigint = 0x2000000 -- XML schema collections bound to xml columns are not replicated.
set @schema_option = @schema_option|@mask  
select @schema_option as schema_option  -- 0x000000000A03509F   

никак не влияет на изменение послаемых команд в моем случае.
Похоже (я не проверял) эта опция означает: копировать или не копировать XML схему при снэпшоте.

При работающей репликации измение схемы на издателе не получается транслировать на подписчика, и придется делать это
отдельным "ручным" выполнением скриптов как на издателе так и на подписчике.
30 июн 17, 10:25    [20601874]     Ответить | Цитировать Сообщить модератору
 Re: Репликация изменения для XML схемы поля.  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
Молодой
придется делать это
отдельным "ручным" выполнением скриптов как на издателе так и на подписчике.
Есть процедура sp_addsriptexec - можно буде автоматизировать выполнение на подписчиках.
30 июн 17, 11:05    [20602093]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить