Поиск и устранение ошибок репликации объединения

Не делайте прямых изменений данных в базе данных объединения

Компания Ivanti реализовала репликацию SQL Server в качестве одного из способов выполнения транзакций от издателя подписчику. Если вы измените "реплицированные" на подписчике данные, эти изменения не отразятся у издателя. Кроме того, издатель не будет знать об этих изменениях. Если вы хотите объединить эти изменения, вы должны будете использовать ПО Replication Monitor в базе данных SQL Server и признать недействительным снимок данных издателя, а затем опубликовать новый снимок.

Ошибка репликации ProductSnapshot после обновления версий Endpoint Manager

Если вы получите следующее сообщение об ошибке:

The process could not bulk copy into table '"dbo"."PRODUCTSnapshot"'

Проблема заключается в том, что вид ReplProductV на обновленном главном сервере не синхронизирован с устаревшей таблице ProductSnapshot в базе данных объединения.

Для исправления этой ошибки необходимо привести в соответствие данные вида и схемы. Выполните команду sp_help с обеих сторон и убедитесь в соответствии столбцов "Nullable". Более вероятно, что столбцы Version и ProductGUID будут не синхронизированы. Вы можете изменить таблицу в базе данных объединения (вы также должны будете внести изменения для таблиц каждого, не обновленного главного сервера):

alter table productsnapshot alter column version nvarchar9255) not null

alter table productsnapshot alter column productguid nvarchar(255) not null

Или вы можете изменить вид на вашем обновленном главном сервере. Для изменения вида вы должны будете остановить репликацию данного вида в диалоге свойств локальной публикации.

Ошибка репликации по причине слишком большого размера файла

Если эта ошибка появится на вашем мониторе репликации, проблема состоит в том, что вид на главном сервере и таблица базы данных объединения имеют разные схемы. Могут быть различными длины столбцов – обычно такое несоответствие относится к атрибуту, НЕ ИМЕЮЩЕМУ НУЛЕВОЕ значение. Все определения столбцов между Repl<tablename>V на главном сервере или в именах таблиц базы данных объединения должны совпадать.

Если в ошибке указана таблица, которая завершается значением "Snapshot", такая таблица является временной в базе развертывания. Соответствующий вид на главном сервере не будет содержать слово "Snapshot" (например, ProductSnapshot = ReplProductV).

Ошибки репликации таблиц ISA и IDE

Проблема: Во время использования устаревшей (или обновленной) версии базы данных Ivanti вы можете увидеть ошибки репликации таблиц ISA и IDE. Столбцы идентификации в таблицах ISA и IDE были переименованы в версии 2011 г.

Решение: После запуска репликации вы должны поместить подписки и статьи в таблицы ISA и IDE. Замените виды и используйте устаревшие идентификации имен столбцов в команде SELECT. Создайте индексы UNIQUE CLUSTERED для видов и повторите добавление статей и фильтров статей. Обновите подписку Наконец, вы можете вручную начать процесс в окне снимка статуса агента (Snapshot Agent Status) или дождаться обнаружения изменений снимка агента. Откройте монитор репликации для подтверждения успешной репликации данных.

Используйте следующий сценарий для исправления проблемы. Убедитесь в том, что вы используете имя подписчика и базы данных (<your subscriber server name> и <your subscriber database name>) в процедурах sp_dropsubscription.

--Поместить подписку и статью в таблицу ISA

sp_dropsubscription 'LDMS', 'ISACSO', '<your subscriber server name>', '<your subscriber database name>'

go

sp_droparticle @publication = 'LDMS', @article='ISACSO'

go

 

--Другой вид для таблицы ISA и использование старого столбца ISAPorts_Idn в выбранном списке.

alter VIEW [dbo].[ReplISAV] (Computer_Idn, ISA_IDN, DeviceNum, Description, Designation, Location, Manufacturer, Type, COREGUID)

WITH SCHEMABINDING AS

SELECT isnull((b.Computer_Idn + 2097152), b.Computer_Idn) Computer_Idn, isnull(cast(b.ISAPorts_IDN as int), cast(0 as int)) ISAPorts_IDN, isnull(b.DeviceNum, 0) DeviceNum, b.Description, b.Designation, b.Location, b.Manufacturer, b.Type, isnull(cast(a.SYSTEMGUID as uniqueidentifier), cast(cast(0 as binary) as uniqueidentifier)) COREGUID

FROM dbo.METASYSTEMS a, dbo.ISA b

WHERE a.SYSTEM_IDN = 0

GO

 

--Повторить создание кластеризованного индекса

create unique clustered index PKReplISAV on ReplISAV (CoreGuid, Computer_Idn, ISA_Idn)

go

 

--Добавить статью и фильтр в публикацию

sp_addarticle @publication = 'LDMS', @article='ISACSO', @source_object='ReplISAV', @destination_table='ISA', @type='indexed view logbased', @sync_object='ReplISAV', @pre_creation_cmd='delete', @schema_option=0x00, @status=24, @ins_cmd='CALL sp_LDins_ISA', @del_cmd='CALL sp_LDdel_ISA', @upd_cmd='MCALL sp_LDupd_ISA', @fire_triggers_on_snapshot='FALSE'

go

sp_articlefilter @publication = 'LDMS', @article='ISACSO', @filter_name='CoreGuidISA', @filter_clause='CoreGuid = cast(''C192290A-8FAC-4ABF-8183-D6B911ACFE73'' as uniqueidentifier)'

go

 

--Поместить подписку и статью в таблицу IDE

sp_dropsubscription 'LDMS', 'IDECSO', '<your subscriber server name>', '<your subscriber database name>'

go

sp_droparticle @publication = 'LDMS', @article='IDECSO'

go

 

--Другой вид для таблицы IDE и использование старого столбца IDEPorts_Idn в выбранном списке.

ALTER VIEW [dbo].[ReplIDEV] (Computer_Idn, IDE_IDN, DeviceNum, Description, Designation, Location, Manufacturer, Type, ProdName, COREGUID)

WITH SCHEMABINDING AS

SELECT isnull((b.Computer_Idn + 2097152), b.Computer_Idn) Computer_Idn, isnull(cast(b.IDEPorts_Idn as int), cast(0 as int)) IDEPorts_IDN, isnull(b.DeviceNum, 0) DeviceNum, b.Description, b.Designation, b.Location, b.Manufacturer, b.Type, b.ProdName, isnull(cast(a.SYSTEMGUID as uniqueidentifier), cast(cast(0 as binary) as uniqueidentifier)) COREGUID

FROM dbo.METASYSTEMS a, dbo.IDE b

WHERE a.SYSTEM_IDN = 0

GO

 

--Повторить создание кластеризованного индекса

create unique clustered index PKReplIDEV on ReplIDEV (CoreGuid, Computer_Idn, IDE_Idn)

go

 

--Добавить статью и фильтр в публикацию

sp_addarticle @publication = 'LDMS', @article='IDECSO', @source_object='ReplIDEV', @destination_table='IDE', @type='indexed view logbased', @sync_object='ReplIDEV', @pre_creation_cmd='delete', @schema_option=0x00, @status=24, @ins_cmd='CALL sp_LDins_IDE', @del_cmd='CALL sp_LDdel_IDE', @upd_cmd='MCALL sp_LDupd_IDE', @fire_triggers_on_snapshot='FALSE'

go

sp_articlefilter @publication = 'LDMS', @article='IDECSO', @filter_name='CoreGuidIDE', @filter_clause='CoreGuid = cast(''C192290A-8FAC-4ABF-8183-D6B911ACFE73'' as uniqueidentifier)'

go

 

--Обновить подписку

sp_refreshsubscriptions @publication='LDMS'

go