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

Откуда: Киев
Сообщений: 1199
Всем здравствуйте,
Случилась очень странная вещь. Итак, есть
Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) 
	Sep 16 2010 19:43:16 
	Copyright (c) 1988-2008 Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)

Сервер-издатель и распространитель Server Collation=SQL_Latin1_General_CP1_CI_AS
(не спрашивайте, почему такой SERVER COLLATION)

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) 
	Mar 29 2009 10:27:29 
	Copyright (c) 1988-2008 Microsoft Corporation
	Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)

Сервер-подписчик 1 Server Collation=Cyrillic_General_CI_AS

Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) 
	Sep 16 2010 19:43:16 
	Copyright (c) 1988-2008 Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)

Сервер-подписчик 2 Server Collation=Cyrillic_General_CI_AS

Настроена репликация транзакций одной БД (DB Collation Cyrillic_General_CI_AS )
и наблюдается очень странная картина для одной реплицируемой таблицы (по крайней, мере пока заловлена одна таблица с такой проблемой)

SELECT TSurname,TNameFROM OP_Operators WHERE Operator_ID=1099
На сервере-издателе и сервере-подписчике1 выводятся идентичные данные
ЗАВИЛИНСКАЯ ИРИНА

На сервере-подписчике 2 выводится какое-то чернокнижие
CAAEEEINEA? E?EIA

Вопрос простой - как сие безобразие починить? Ограничений два:
1. Переустанавливать сервера нельзя
2. Ломать репликацию нельзя

Я пока подумал в сторону такого скрипта на издателе
IF OBJECT_ID(N'TempOperators',N'U') IS NOT NULL
  DROP TABLE TempOperators
CREATE TABLE TempOperators
(
  Operator_ID INT NOT NULL,
  TSurname VARCHAR(50) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL,
  TName VARCHAR(30)COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL,
  TMiddleName VARCHAR(50)COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL,
)  

INSERT TempOperators(Operator_ID,TSurname,TName,TMiddleName)
SELECT Operator_ID,
tSurname COLLATE CYRILLIC_GENERAL_CI_AS,
ISNULL(tName,'')COLLATE CYRILLIC_GENERAL_CI_AS,
ISNULL(tMiddleName,'')COLLATE CYRILLIC_GENERAL_CI_AS
FROM OP_OPERATORS;

ALTER TABLE OP_OPERATORS ALTER COLUMN TSurname VARCHAR(50)
COLLATE CYRILLIC_GENERAL_CI_AS;

ALTER TABLE OP_OPERATORS ALTER COLUMN TName VARCHAR(30)
COLLATE CYRILLIC_GENERAL_CI_AS

ALTER TABLE OP_OPERATORS ALTER COLUMN TMiddleName VARCHAR(50)
COLLATE CYRILLIC_GENERAL_CI_AS
GO

UPDATE OP SET
 OP.TSurname=Temp.TSurname,
 OP.TName=Temp.TName,
 OP.TMiddleName=Temp.tMiddleName
FROM OP_Operators AS OP
JOIN TempOperators AS TEMP ON OP.Operator_ID=Temp.Operator_ID
 
Но не уверен, что поможет

Какие будут рекомендации?
5 ноя 11, 00:19    [11552531]     Ответить | Цитировать Сообщить модератору
 Re: странности с репликаций  [new]
invm
Member

Откуда: Москва
Сообщений: 9826
Приведите для таблицы OP_Operators:
1. результат sp_helparticle с издателя;
2. второй набор из результата sp_help со всех серверов.
5 ноя 11, 01:03    [11552574]     Ответить | Цитировать Сообщить модератору
 Re: странности с репликаций  [new]
londinium
Member

Откуда: Киев
Сообщений: 1199
автор
результат sp_helparticle с издателя;

там очень длинный вывод, поэтому прикладываю файлик
автор
второй набор из результата sp_help со всех серверов.

может, я Вас не так понял, но на всех трех серверах второй набор sp_help пустой

К сообщению приложен файл (Replic.csv - 811bytes) cкачать
5 ноя 11, 02:16    [11552649]     Ответить | Цитировать Сообщить модератору
 Re: странности с репликаций  [new]
invm
Member

Откуда: Москва
Сообщений: 9826
londinium, если выполнить
exec sp_help 'dbo.OP_Operators'
то второй набор результата должен содержать информацию о колонках таблицы.
5 ноя 11, 10:44    [11552750]     Ответить | Цитировать Сообщить модератору
 Re: странности с репликаций  [new]
londinium
Member

Откуда: Киев
Сообщений: 1199
автор
то второй набор результата должен содержать информацию о колонках таблицы.

Содержит. Прикладываю файлик.

К сообщению приложен файл (ReplicOperator.csv - 1Kb) cкачать
5 ноя 11, 15:31    [11553058]     Ответить | Цитировать Сообщить модератору
 Re: странности с репликаций  [new]
invm
Member

Откуда: Москва
Сообщений: 9826
В каком инструменте выполняется запрос:
SELECT TSurname,TNameFROM OP_Operators WHERE Operator_ID=1099
?
5 ноя 11, 16:25    [11553151]     Ответить | Цитировать Сообщить модератору
 Re: странности с репликаций  [new]
londinium
Member

Откуда: Киев
Сообщений: 1199
Запрос выполняется в SSMS 10.50.2500.0
5 ноя 11, 19:39    [11553452]     Ответить | Цитировать Сообщить модератору
 Re: странности с репликаций  [new]
invm
Member

Откуда: Москва
Сообщений: 9826
1. Сравните опции линкед-серверов подписчиков.
2. Сравните процедуры dbo.sp_MSins_dboOP_Operators, dbo.sp_MSupd_dboOP_Operators и dbo.sp_MSdel_dboOP_Operators на подписчиках.
3. Помониторьте профайлером что уходит подписчикам.
4. В дополнение или вместо п.3 включите подробное логирование у дистрибьюшен-агентов (-OutputVerboseLevel 2 -Output <файл>)
5 ноя 11, 21:11    [11553689]     Ответить | Цитировать Сообщить модератору
 Re: странности с репликаций  [new]
londinium
Member

Откуда: Киев
Сообщений: 1199
Итак, мистика сгущается и усиливается
выполняю на издателе
UPDATE OP_OPERATORS SET tSurname='ZAVILINSKAYA' COLLATE CYRILLIC_GENERAL_CI_AS,
tName='IRINA' COLLATE CYRILLIC_GENERAL_CI_AS
WHERE OPERATOR_ID=1099
GO
UPDATE OP_Operators SET tSurname='ЗАВИЛИНСКАЯ'COLLATE CYRILLIC_GENERAL_CI_AS,
tName='ИРИНА'COLLATE CYRILLIC_GENERAL_CI_AS
WHERE OPERATOR_ID=1098
И данные приходят на проблемный сервер в правильной кодировке.
если же выполнить просто
UPDATE OP_Operators SET tSurname='ЗАВИЛИНСКАЯ'COLLATE CYRILLIC_GENERAL_CI_AS,
tName='ИРИНА'COLLATE CYRILLIC_GENERAL_CI_AS
WHERE OPERATOR_ID=1098
то ничего не меняется

Какие будут идеи?
7 ноя 11, 11:16    [11556687]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить