Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 крякозябры на одинаковых collation  [new]
нуб987
Guest
есть 2 сервера. На обоих крутятся MSSQL2000
один основной, второй запасной. На основном ОС WinServer2003R2, на запасном WinServer2008R2
Каждое утро бекапы с основного сервера поднимаются на запасном. Соот-но collation этих баз одинаковы и там, и там: Cyrillic_General_CI_AS.
Но collation'ы серверов разные: на основном Cyrillic_General_CI_AS, на запасном SQL_Latin1_General_CP1_CI_AS.

Проблема в том, что на запасном сервере в одной(!) таблице в текстовом поле выдаются крякозябры. В остальных таблицах все в порядке. Collation этого поля: <database default>
Т.е. на основном сервере в этом поле все ок, на запасном крякозябры.

Как это так и что я делаю не так?
21 дек 15, 04:20    [18586565]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
aleks2
Guest
нуб987
Как это так и что я делаю не так?

Все еще не купил очки.

При restore бякапа НИКАКИЕ преобразования текстовых данных сервер не выполняет. Хучь пусть там будет японская коллейшн.

Следовательно... это обман зрения. Клиент ПОКАЗЫВАЕТ те кракозябрики.

select cast(aField as varbinary(...))

поставит фсе на место.
21 дек 15, 05:46    [18586595]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
aleks2
Клиент ПОКАЗЫВАЕТ те кракозябрики.

а на основании чего клиент делает выводы, чего именно показывать - крякозябры или человеческий текст?
21 дек 15, 05:56    [18586597]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
Glory
Member

Откуда:
Сообщений: 104751
нуб987
а на основании чего клиент делает выводы, чего именно показывать - крякозябры или человеческий текст?

На основании логики, которую запрограммировал создатель клиента.
Вы в Management Studio выполняли этот запрос ?
21 дек 15, 09:39    [18586977]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
Glory
Вы в Management Studio выполняли этот запрос ?

нет. Выполнял в QA и в екселе на отпроцешенном по этим данным кубике. Во всех случаях с запасного сервера получал крякозябры. С основного все по-русски.
21 дек 15, 21:35    [18591144]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
Glory
На основании логики, которую запрограммировал создатель клиента.

я вот и пытаюсь понять, как этот клиент (точнее 2 клиента: QA и ексель) решает, что таблицу клиентов надо показать нормально, а таблицу продукции НЕнормально. Хотя collation'ы у них совпадают.

Т.е. где-то все-таки есть разница, которую я упускаю. Вот пытаюсь понять, где и в чем эта разница.
21 дек 15, 21:38    [18591157]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
нуб987
Вот пытаюсь понять, где и в чем эта разница.

сделайте новую базу и сложите туда 2 таблицы: правильную и неправильную.
в них по 2 строки из исходных таблиц.
это дело забэкапьте и на шару сложите, а линк сюда.
скачаю, разверну, опрошу из всего, что есть.
а то скоро я с 2000-ыми распрощаюсь, но пока что есть еще возможность
22 дек 15, 12:06    [18593372]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
aleks2
Guest
нуб987
Проблема в том, что на запасном сервере в одной(!) таблице в текстовом поле выдаются крякозябры. В остальных таблицах все в порядке. Collation этого поля: <database default>
Т.е. на основном сервере в этом поле все ок, на запасном крякозябры.


нуб987
я вот и пытаюсь понять, как этот клиент (точнее 2 клиента: QA и ексель) решает, что таблицу клиентов надо показать нормально, а таблицу продукции НЕнормально. Хотя collation'ы у них совпадают.


Когнитивный диссонанс.

Вы ужо определитесь.

ЗЫ.
select aField collate <Имя коллейшена> from aTable


клиенты не решают - решают библиотеки подключения.
22 дек 15, 14:15    [18594225]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
внезапно все поправилось.
хз, что именно повлияло. Но как-то потребовалось срочно перенести копию базы на запасной сервер.
Делать бекап на основном и разворачивать его на запасном было бы долго. Поэтому оба сервера были остановлены, затем файлы БД скопированы с основного на запасной.

Это было несколько дней назад и вот только сейчас заметил, что данные в порядке.

ПС. за эти несколько дней происходило еще много чего, но кажется, что это не должно было повлиять на крякозябры.

Странно только, что с разворачиванием бекапа крякозябры были. А после переноса файлов БД крякозябры исчезли.

ППС. и кто это слово придумал?! и писать неудобно, и читать, и произносить...
22 дек 15, 20:17    [18596226]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
удивительное дело.
а обычно таинственные явления самоликвидируются,
как только я прошу копию экрана или базы.
или даже просто пару строк загадочных таблиц
22 дек 15, 20:38    [18596287]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
o-o, надо это все сразу требовать, чтобы проблема быстрее решалась :)
24 дек 15, 04:26    [18602275]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
o-o
удивительное дело.
а обычно таинственные явления самоликвидируются,
как только я прошу копию экрана или базы.
или даже просто пару строк загадочных таблиц


шаман
24 дек 15, 10:30    [18602976]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
хых :)
сработало автоматическое развертывание базы на запасном сервере. Крякозябры вернулись.
ПС. Напомню: они исчезли после останова серверов и копирования файлов БД.

Т.е. если мы останавливаем серверы и просто копируем файлы БД, то крякозябров нет.
Если поднимаем бекап базы, то есть.

Выкладываю бекап. Внутри 2 таблицы:
- MatId_Usage (с основного сервера) - крякозябров нет
- MatId_Usage_N (восстановленная на запасном) - крякозябры есть

select * from MatId_Usage
select * from MatId_Usage_n

возвращает следующее:
idCaption
8220ПробМШТвысок 1 уп Ч
8221ВатрЯбл 0.1 уп А
8222клВатрЯбл 0.1 уп А
8223ПалянУкр 0.75 уп 2
8224ПалянУкр 0.76 уп 2

idCaption
8220I?iaIOOaunie 1 oi ?
8221Aao??ae 0.1 oi A
8222eeAao??ae 0.1 oi A
8223IaeyiOe? 0.75 oi 2
8224IaeyiOe? 0.76 oi 2


К сообщению приложен файл (tmp_20160108_0441.rar - 106Kb) cкачать
8 янв 16, 04:50    [18651674]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
в таблицы занесено разное, это видно, если в бин сконвертировать.
но часа через 2 проверю, как 2000-ые тулы это отобразят

К сообщению приложен файл. Размер - 23Kb
8 янв 16, 08:25    [18651767]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
Проблема с кодировкой русских букв после переноса базы
Про подмену файлов звучит странно,
но что на первом сервере кракозябры кириллицей показывает,
то можно организовать подменой виндовых "буржуйских" NLS-файлов.
т.е. во второй таблице не кириллица, а 1252,
но поиздевавшись над виндой можно добиться отображения этого добра в виде 1251.
т.е. даю 100%, что 2000ый на работе выдаст кракозябры, хоть там и тоже win server 2003,
т.е. вроде и ваши условия там, но винда правильная, без следов насилия
8 янв 16, 09:04    [18651793]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
вот все ваши кракозябры на месте на 2000-ом, стоящем на win server 2003

К сообщению приложен файл. Размер - 58Kb
8 янв 16, 11:56    [18652043]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
нуб987
Выкладываю бекап. Внутри 2 таблицы:
- MatId_Usage (с основного сервера) - крякозябров нет
- MatId_Usage_N (восстановленная на запасном) - крякозябры есть

минуточку.
вас просили не 1 исходную и 1 восстановленную таблицы.
а две исходных: одна та, что" восстанавливается правильно"
и вторая та, что "восстанавливается неправильно".
их забэкапить, чтобы проверить, что с ними будет при восстановлении
и просто посмотреть, что же там различного в исходных таблицах
8 янв 16, 12:17    [18652092]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
короче, у вас ситуация обратная той,
что была в процитированной теме.
у товарища из той темы в столбцы с латинским коллэйшеном клали кириллицу,
а у вас в первой таблице не 1251, а 1252 занесено.

как это должно было быть, у меня показано в колонке ascii_1252
(чтобы это получить, надо коды того, что в "кириллической" колонке, привести к варчару
в контексте НЕкириллической базы)
если же теперь это отколлэйтить кириллической 1251, произойдет перекодировка,
т.е. на этом этапе правильные коды утеряны.
в чем можно убедиться, переведя обратно в varbinary.
только при ресторе никакая перекодировка не происходит.
так что смотреть оригинал 1252 можно моим же способом,
в контексте любой некириллической базы с 1252.

ну и у вас на первом сервере тоже кто-то подменил NLS-ы
и 1252 отображается кириллицей.
только зачем?

К сообщению приложен файл. Размер - 58Kb
8 янв 16, 14:38    [18652451]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
o-o
ну и у вас на первом сервере тоже кто-то подменил NLS-ы
и 1252 отображается кириллицей.
только зачем?

сравнил файлы c_1251.nls и c_1252.nls из windows\system32 обоих серверов по содержимому.
Обе пары файлов полностью совпадают. Т.е. файлы c_1251.nls на обоих серверах одинаковы, и файлы c_1252.nls тоже одинаковы.
ПС. если глянуть на них "быстрым просмотром", то в c_1251.nls можно увидеть русский алфавит.
9 янв 16, 01:17    [18654347]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
нуб987,

тогда давайте нормальное репро.
т.е. бэкап базы из двух таблиц,
к-ые содержат кириллицу,
такой что при его восстановлении одна из таблиц внезапно будет содержать что-то иное.
вы же пока дали ту таблицу, что восстанавливается как надо.
а вторую скопировали не из исходной базы.
11 янв 16, 11:46    [18661414]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
o-o
вы же пока дали ту таблицу, что восстанавливается как надо.
а вторую скопировали не из исходной базы.

вот как я делал:
- в EM на запасном сервере создал базу tmp с collation Cyrillic_General_CI_AS (по умолчанию на этом серваке SQL_Latin1_General_CP1_CI_AS)
- импортировал таблицу (правой кнопкой мышки, далее Import Data...) из соседней восстановленной базы и назвал ее MatId_Usage_N
- импортировал исходную таблицу с "главного" сервера таким же образом и назвал ее MatId_Usage
- далее забекапил и заархивировал.

Это не то, что требуется?
11 янв 16, 19:50    [18664240]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
Нет, мне надо 2 таблицы с исходного сервера, нормальную и "аномальную".
Т.е. на исходном создаете базу с тем же коллэйшеном,
в нее скриптом создаете 2 таблицы, аналайзер умеет скрипт таблицы генерить?
В 2 сгенеренные скриптом таблицы (FK, триггеры, индексы -- не надо,
но чтобы столбцы все были точно те, что в исходных таблицах)
инсетром перелейте несколько строк.
Эту новую базу забэкапить,
проверить, как она восстановиться на втором,
должны же в одной таблице типа вылезти кракозябры.
И вот этот аномальный бэкап, который "восстанавливается с перекодированием",
выкладывайте, чтобы и другие смогли себе восстановить и убедиться в перекодировании.
Можно и на втором сервере забэкапить только что восстановленное и "перекодированное" и его тоже сюда.
Чтобы желающие проверили, та ли это база, нет ли подделки таблиц.
Тогда и эксперимент чистый, и все смогут чудо оценить и проэкзаменировать
11 янв 16, 20:48    [18664359]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
o-o
нет ли подделки таблиц.

чего ж вы так людям не доверяете? "Подделка таблиц", "подделка картинок"...
есть же просто людская тупость :)

в общем, дело было вот в чем:
утром автоподнимается бекап на запасном сервере. В этот момент все хорошо: русские слова, никаких крякозябров.
Затем ближе к вечеру с интервалом от нескольких минут до десятков минут срабатывают джобы, обновляющие и перезаполняющие справочники. Вот тут и начинается треш :)

Когда я создавал тему, попал как раз в середину такой перезаливки справочников: какие-то уже обновились (и получили там не пойми что), а какие-то еще нет (и там все по-русски).

Выяснилось это сегодня ночью, когда я попытался скопировать справочники для вас. Увидел, что на запасном сервере в некоторых справочниках кол-во записей почему-то больше, чем на основном. Причем половина нормальная, а половина в крякозябрах.
Сопоставил время и понял, в чем причина.
Вот сейчас проверил: автоподнятие баз уже произошло, а обновление справочников еще нет - все в порядке :)

Значит при обновлении справочников происходят эти глюки. Буду копать.
Всем спасибо за помощь :)
12 янв 16, 10:54    [18665652]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
o-o
Guest
нуб987
чего ж вы так людям не доверяете? "Подделка таблиц", "подделка картинок"...
...
утром автоподнимается бекап на запасном сервере. В этот момент все хорошо: русские слова, никаких крякозябров.

какое же это недоверие к людям?
бывает же еще обычное неверенье в чудеса.
при ресторе никакой перекодировки не происходит, хотите верьте, хотите нет.
вы пытались доказать, что еще как.
вы показали 2 таблицы *с разными кодами внутри* и свалили это на бэкап/рестор.

в приведенной мной теме был пример того, как можно в таблицу со столбцами с CP1252
сложить 1251, не получить при этом вопросики, да еще и отображать в виде 1251
(потому что 1252 на том компе заменили тем самым 1251)
сделано было с помощью насилования винды,
но на любой другой винде столбцы 1252 отображались уже в виде 1252.

в тот раз тоже верить никто не хотел,
но человек там не наврал и доступ к компу предоставил, и все мы выяснили.
поэтому попрошу "не надо".
когда вменяемые доказательства я не сдаюсь и дальше разбираюсь, а не списываю на неуемную фантазию
12 янв 16, 11:55    [18666040]     Ответить | Цитировать Сообщить модератору
 Re: крякозябры на одинаковых collation  [new]
нуб987
Guest
o-o
вы пытались доказать, что еще как.

доказать я уж точно ничего не пытался. Я пытался разобраться в непонятной для меня проблеме.
Вы говорили, что такого быть не может. Я и сам это понимал, но глазами видел обратное.
А потом выяснилось, что это не сверхъестественное чудо, а недостаток фактов.

В любом случае спасибо за помощь :)
12 янв 16, 14:54    [18667376]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить