Добрый день. Помогите пожалуйста разобраться с репликацией. Сервер: 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 Причем аналогичные таблицы, реплицируются правильно. Голова уже кругом. Почему и как с этим бороться? Спасибо.
INSTEAD OF INSERT триггера есть? Что на каждой из баз показывает dbcc checkident?
Поправочка. Добавление записей происходит исключительно на сервере. После 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 триггера есть? Да, есть.
Я бы начал копать в сторону триггеров. Не они ли проблему вызывают.