SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Репликация SQL 2008 на SQL 2000 (Подписчик добавляет записи с новым ID.)
Репликация SQL 2008 на SQL 2000 [сообщение #1466] Tue, 24 January 2023 21:13 Переход к следующему сообщению
astakhov_d в настоящее время не в онлайне  astakhov_d
Сообщений: 3
Зарегистрирован: January 2023
Junior Member
Добрый день.
Помогите пожалуйста разобраться с репликацией.

Сервер: Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Apr 2 2010 15:53:02 Copyright (c) Microsoft Corporation Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)

Merge publication of database 'Assort' from Publisher 'Server'

Compatibility level:
Subscribers must be servers running the following version of SQL Server or later:
SQL Server 2000

Есть таблица:
CREATE TABLE [dbo].[MED1](
[MED1001] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[MED1002] [varchar](255) NOT NULL,
[MED1003] [varchar](255) NOT NULL,
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL,
CONSTRAINT [PK_MED1001] PRIMARY KEY CLUSTERED
(
[MED1001] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[MED1] WITH NOCHECK ADD CONSTRAINT [repl_identity_range_9065DFB3_273E_4F33_8558_59C5BD57C605] CHECK NOT FOR REPLICATION (([MED1001]>(2719) AND [MED1001]<=(12719) OR [MED1001]>(12719) AND [MED1001]<=(22719)))
GO

ALTER TABLE [dbo].[MED1] CHECK CONSTRAINT [repl_identity_range_9065DFB3_273E_4F33_8558_59C5BD57C605]
GO

ALTER TABLE [dbo].[MED1] ADD CONSTRAINT [MSmerge_df_rowguid_B45EA1DE122A432D905C5E859F92337E] DEFAULT (newid()) FOR [rowguid]
GO

При синхронизации на подписчиков SQL 2008, все нормально, но SQL 2000 выдает новый ID для MED1001.
Например, запись:
MED1001 MED1002 MED1003 rowguid
3780 TEST3 1234567890125 68F5C7EC-2D52-481D-BD33-00D906CB5E2B
Заливается на SQL2000 как:
4294967297 TEST3 1234567890125 68F5C7EC-2D52-481D-BD33-00D906CB5E2B
Причем аналогичные таблицы, реплицируются правильно. Голова уже кругом.
Почему и как с этим бороться?
Спасибо.
Re: Репликация SQL 2008 на SQL 2000 [сообщение #1467 является ответом на сообщение #1466] Tue, 24 January 2023 23:02 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 358
Зарегистрирован: June 2022
Senior Member
INSTEAD OF INSERT триггера есть?

Что на каждой из баз показывает dbcc checkident?
Re: Репликация SQL 2008 на SQL 2000 [сообщение #1468 является ответом на сообщение #1467] Wed, 25 January 2023 10:04 Переход к предыдущему сообщениюПереход к следующему сообщению
astakhov_d в настоящее время не в онлайне  astakhov_d
Сообщений: 3
Зарегистрирован: January 2023
Junior Member
Поправочка.
Добавление записей происходит исключительно на сервере.
После Reinitialize, записи попавшие в Snapshot естественно заливаются правильно, записи добавленные после формирования Snapshot:
на SQL 2000, только одна запись с новым ID и конфликтом.
на SQL 2008 все нормально.

На сервере:
Checking identity information: current identity value '3780', current column value '3780'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

На подписчике:
Checking identity information: current identity value '206352896', current column value '4294967297'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

>>INSTEAD OF INSERT триггера есть?
Да, есть.
Re: Репликация SQL 2008 на SQL 2000 [сообщение #1469 является ответом на сообщение #1468] Wed, 25 January 2023 12:09 Переход к предыдущему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 358
Зарегистрирован: June 2022
Senior Member
Я бы начал копать в сторону триггеров. Не они ли проблему вызывают.
Предыдущая тема: Разработка функции , для расчета новой стоимости работ
Следующая тема: Репликация SQL 2008 на SQL 2000
Переход к форуму:
  


Текущее время: Fri Nov 15 13:35:04 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00632 секунд