Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / серверный collation / 25 сообщений из 30, страница 1 из 2
30.05.2019, 09:11
    #39820199
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Добрый день!

Подскажите, пож-та, исходя из каких критериев выбирается серверный collation?

Существуют ли какие-то best practice в настоящее время?
...
Рейтинг: 0 / 0
30.05.2019, 09:17
    #39820202
Danion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.,

Обычно collation SQL сервера выбираем под требования проекта, базы которого будут там размещены.
...
Рейтинг: 0 / 0
30.05.2019, 09:25
    #39820205
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Danion,

а в чем могут выражаться данные требования?
...
Рейтинг: 0 / 0
30.05.2019, 09:28
    #39820209
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.Danion,

а в чем могут выражаться данные требования?
На каком основном языке ведете разработку.
...
Рейтинг: 0 / 0
30.05.2019, 09:36
    #39820214
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
aleks222,

язык имеется ввиду какой?
...
Рейтинг: 0 / 0
30.05.2019, 11:09
    #39820259
Danion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.,

Если не путаю, то Collation применяется для сортировки и сравнения данных в таблицах. Выбор основного языка и алфавита, можно выставить, чтобы A и a считало одним символом, а можно разными. Аналогично для символов типа a и á. Есть ещё для японских символов, но это обычно выключено.
У Микрософта есть немного про это: https://docs.microsoft.com/ru-ru/sql/t-sql/statements/collations?view=aps-pdw-2016
...
Рейтинг: 0 / 0
30.05.2019, 11:46
    #39820269
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.aleks222,

язык имеется ввиду какой?

Язык, на котором по умолчанию хранятся данные в таблицах.
...
Рейтинг: 0 / 0
30.05.2019, 12:39
    #39820288
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Владислав Колосов, конкретно один язык?

Если предполагаются данные латиницы и кириллицы - можно ли подобрать подходящий collation?
...
Рейтинг: 0 / 0
30.05.2019, 13:00
    #39820294
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.Владислав Колосов, конкретно один язык?

Если предполагаются данные латиницы и кириллицы - можно ли подобрать подходящий collation?База создаётся с нуля? На сервере уже есть другие базы?
Если с нуля, то решите - при сравнении строк регистр букв должен учитываться или нет?
А если какие-то базы на сервере уже есть, то выбор у вас небольшой - COLLATE вашей базы должен совпадать с COLLATE базы tempdb.
Иначе никакой жизни у вас не будет.
...
Рейтинг: 0 / 0
30.05.2019, 13:24
    #39820301
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.Владислав Колосов, конкретно один язык?

Если предполагаются данные латиницы и кириллицы - можно ли подобрать подходящий collation?

Обычно используют cyrillic_general_ci_as в таких случаях.
...
Рейтинг: 0 / 0
30.05.2019, 13:44
    #39820309
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Владислав КолосовЯзык, на котором по умолчанию хранятся данные в таблицах.
Данные в таблицах не хранятся "на каком либо языке". Они там либо юникодные либо однобайтовые. Коллейшен задает правила, по которым происходит сравнение строковых данных. Он может быть задан для сервера, дла базы данных, для таблицы, для отдельного столбца, или вообще быть указан в отдельном запросе к таблице. Например, две строки A и B могут иметь одинаковое юникодное представление, но для разных языков по их правилам будет для одного A < B, а для другого A > B - вот как раз эти правила collation и задает.
...
Рейтинг: 0 / 0
30.05.2019, 13:53
    #39820316
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
fkthatВладислав КолосовЯзык, на котором по умолчанию хранятся данные в таблицах.
Данные в таблицах не хранятся "на каком либо языке". Они там либо юникодные либо однобайтовые. Коллейшен задает правила, по которым происходит сравнение строковых данных. Он может быть задан для сервера, дла базы данных, для таблицы, для отдельного столбца, или вообще быть указан в отдельном запросе к таблице. Например, две строки A и B могут иметь одинаковое юникодное представление, но для разных языков по их правилам будет для одного A < B, а для другого A > B - вот как раз эти правила collation и задает.Но вы что же, при создании таблиц у всех полей COLLATE прописываете явно?
И все ваши коллеги делают так же?
Или в каждом запросе у каждого текстового поля явно пишете COLLATE?
Ведь нет же?
А при сравнениях с полями временных таблиц вы неизбежно столкнётесь с COLLATE базы tempdb,
опять же, если не будете везде писать COLLATE явно.
...
Рейтинг: 0 / 0
30.05.2019, 14:01
    #39820321
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Сервер создается с нуля, на который будут мигрировать текущие базы.

iapMichail A.Владислав Колосов, конкретно один язык?

Если предполагаются данные латиницы и кириллицы - можно ли подобрать подходящий collation?База создаётся с нуля? На сервере уже есть другие базы?
Если с нуля, то решите - при сравнении строк регистр букв должен учитываться или нет?
А если какие-то базы на сервере уже есть, то выбор у вас небольшой - COLLATE вашей базы должен совпадать с COLLATE базы tempdb.
Иначе никакой жизни у вас не будет.
...
Рейтинг: 0 / 0
30.05.2019, 14:17
    #39820327
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
fkthat,

за что люблю эту конференцию, так это за количество снобов на квадратный метр.
...
Рейтинг: 0 / 0
30.05.2019, 16:28
    #39820399
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.Сервер создается с нуля, на который будут мигрировать текущие базы.

iapпропущено...
База создаётся с нуля? На сервере уже есть другие базы?
Если с нуля, то решите - при сравнении строк регистр букв должен учитываться или нет?
А если какие-то базы на сервере уже есть, то выбор у вас небольшой - COLLATE вашей базы должен совпадать с COLLATE базы tempdb.
Иначе никакой жизни у вас не будет.То есть, базы с данными уже есть?
Тогда у них уже установлен вполне определённый COLLATE. Вот таким он и должен остаться на новом сервере.
...
Рейтинг: 0 / 0
30.05.2019, 16:56
    #39820419
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.Сервер создается с нуля, на который будут мигрировать текущие базы.Ставьте тот же коллейшен, который был выбран на том сервере, с которого делается миграция.
Если это установить невозможно, тогда, скорее всего, нужно выбрать тот коллейшен, который у переносимых баз.
...
Рейтинг: 0 / 0
30.05.2019, 19:48
    #39820467
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
alexeyvg, iap

А если несколько экземпляров, каждый со своим collation, в итоге данные будут переезжать на один сервер. Как в данном случае поступить? Если на целевом сервере установить collation, который будет совпадать с одним из имеющихся экземпляров, а со вторым совпадать не будет соответственно - возникнут ли проблемы?
...
Рейтинг: 0 / 0
30.05.2019, 21:05
    #39820481
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.alexeyvg, iap

А если несколько экземпляров, каждый со своим collation, в итоге данные будут переезжать на один сервер. Как в данном случае поступить? Если на целевом сервере установить collation, который будет совпадать с одним из имеющихся экземпляров, а со вторым совпадать не будет соответственно - возникнут ли проблемы?Тогда нужно, что бы в приложении не было багов с коллейшенами.
Правильно написанное приложение не зависит от коллейшена сервера.
Но если приложение всё таки не работает на сервере с неподходящим ему колелйшеном, то тогда придётся его эксплуатировать на выделенном инстансе, либо править в нём ошибки (или, как вариант, менять коллейшен модели и всех данных).
...
Рейтинг: 0 / 0
30.05.2019, 21:56
    #39820492
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.alexeyvg, iap

А если несколько экземпляров, каждый со своим collation, в итоге данные будут переезжать на один сервер. Как в данном случае поступить? Если на целевом сервере установить collation, который будет совпадать с одним из имеющихся экземпляров, а со вторым совпадать не будет соответственно - возникнут ли проблемы?Возникнут. Да ещё какие!
Если COLLATE строк прим сравнении несовместимы, всё обламывается с сообщением о несоответствии COLLATE.
Кстати, явное указание COLLATE у полей в условии запроса делает невозможным использование индекса по этим полям.
Так что тоже нехороший выход.
...
Рейтинг: 0 / 0
30.05.2019, 21:59
    #39820493
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
iapMichail A.alexeyvg, iap

А если несколько экземпляров, каждый со своим collation, в итоге данные будут переезжать на один сервер. Как в данном случае поступить? Если на целевом сервере установить collation, который будет совпадать с одним из имеющихся экземпляров, а со вторым совпадать не будет соответственно - возникнут ли проблемы?Возникнут. Да ещё какие!
Если COLLATE строк прим сравнении несовместимы, всё обламывается с сообщением о несоответствии COLLATE.
Кстати, явное указание COLLATE у полей в условии запроса делает невозможным использование индекса по этим полям.
Так что тоже нехороший выход.Впрочем, а вдруг они окажутся совместимыми?
Тогда вы в шоколаде!.
...
Рейтинг: 0 / 0
31.05.2019, 08:58
    #39820558
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Так и как можно выйти из данной ситуации?

iapMichail A.alexeyvg, iap

А если несколько экземпляров, каждый со своим collation, в итоге данные будут переезжать на один сервер. Как в данном случае поступить? Если на целевом сервере установить collation, который будет совпадать с одним из имеющихся экземпляров, а со вторым совпадать не будет соответственно - возникнут ли проблемы?Возникнут. Да ещё какие!
Если COLLATE строк прим сравнении несовместимы, всё обламывается с сообщением о несоответствии COLLATE.
Кстати, явное указание COLLATE у полей в условии запроса делает невозможным использование индекса по этим полям.
Так что тоже нехороший выход.
...
Рейтинг: 0 / 0
31.05.2019, 09:31
    #39820574
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
Michail A.Так и как можно выйти из данной ситуации?Несколько экземпляров SQL Server - по одному на каждый collation
Либо все БД с collation, отличным от серверного сделать contained - тогда конфликта с временными таблицами не будет, если они создаются в контексте такой БД.
...
Рейтинг: 0 / 0
31.05.2019, 16:43
    #39820882
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
iapЕсли COLLATE строк прим сравнении несовместимы, всё обламывается с сообщением о несоответствии COLLATE.
Кстати, явное указание COLLATE у полей в условии запроса делает невозможным использование индекса по этим полям.
Так что тоже нехороший выход.Да, это 2 варианта неправильные, но есть же ещё и правильный вариант - при создании временных таблиц указывать коллейшен базы.

Хотя у автора ИМХО немного другой вопрос - как сделать, что бы всё работало, не меняя базы, и не даже не зная, что там внутри.
Michail A.Так и как можно выйти из данной ситуации?Без изменения приложений (то есть исправлении ошибок в хранимых процедурах, и, возмможно, в других месстах) - только делать отдельные инстансы для каждого коллейшена.
...
Рейтинг: 0 / 0
31.05.2019, 16:46
    #39820883
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
invmЛибо все БД с collation, отличным от серверного сделать contained - тогда конфликта с временными таблицами не будет, если они создаются в контексте такой БД.Что то слишком кардинальное решение :-)
...
Рейтинг: 0 / 0
31.05.2019, 16:50
    #39820886
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
серверный collation
alexeyvgЧто то слишком кардинальное решение :-)Почему?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / серверный collation / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]