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

Откуда:
Сообщений: 3
Всем доброго времени суток.

Прошу строго меня не судить в данный момент начинаю свой первый большей проект(Диплом) и уже сломал голову пытался искать ничего не нашел или скорее всего не правильно искал.

В качестве базы данных был определен MS-Sql 2012 express.
Все бы было хорошо, но я столкнулся с проблемой, Как мне определить Кодировку для базы данных? В базе данных будут данные на двух языках: Иврит И Английский.

На данный момент база данных абсолютно пустая созданы только таблицы. Кодировка в
Cyrillic_General_CI_AS

Заранее благодарю за помощь
12 мар 14, 19:32    [15712971]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
o-o
Guest
если в таблицах нету типов char, varchar, а только nchar, nvarchar, то по барабану.
не забывать при вставке строк передавать их юникодом, указывая N.

если сменить сейчас коллэйшен базы:
USE [master]
GO
ALTER DATABASE [cyr] COLLATE Hebrew_CI_AS
GO


то у созданных уже таблиц он все равно не поменяется.
т.е. или писать скрипт, меняющий коллэйшен всем колонкам char, varchar,
либо заскриптовать все таблицы, сменить коллэйшен базы, дропнуть таблицы и создать их заново.

ну или, не меняя коллэйшен базы, просто всем колонкам char, varchar сменить коллэйшен
12 мар 14, 20:06    [15713172]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
demonikx
Все бы было хорошо, но я столкнулся с проблемой, Как мне определить Кодировку для базы данных? В базе данных будут данные на двух языках: Иврит И Английский.

На данный момент база данных абсолютно пустая созданы только таблицы. Кодировка в
Cyrillic_General_CI_AS
Используйте тип поля UNICODE, она позволяет хранить данные на любом языке, или varchar, если будет только Иврит И Английский.

Cyrillic_General_CI_AS - это не кодировка, а правила сортировки.
Не знаю, почему вы перевели Cyrillic как "иврит" :-)
Гугл-переводчик подсказывает, что иврит - это hebrew

То есть используйте Hebrew_CI_AS
12 мар 14, 20:11    [15713200]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
alexeyvg
Member

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

ну или, не меняя коллэйшен базы, просто всем колонкам char, varchar сменить коллэйшен
ИМХО лучше переустановить сервер с кодировкой Hebrew_CI_AS, потом из скриптов пересоздать базу. Если скриптов нет, сделать их перед переустановкой.
12 мар 14, 20:13    [15713209]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
demonikx
Member

Откуда:
Сообщений: 3
alexeyvg
demonikx
Все бы было хорошо, но я столкнулся с проблемой, Как мне определить Кодировку для базы данных? В базе данных будут данные на двух языках: Иврит И Английский.

На данный момент база данных абсолютно пустая созданы только таблицы. Кодировка в
Cyrillic_General_CI_AS
Используйте тип поля UNICODE, она позволяет хранить данные на любом языке, или varchar, если будет только Иврит И Английский.

Cyrillic_General_CI_AS - это не кодировка, а правила сортировки.
Не знаю, почему вы перевели Cyrillic как "иврит" :-)
Гугл-переводчик подсказывает, что иврит - это hebrew

То есть используйте Hebrew_CI_AS


Cyrillic_General_CI_AS - я не знал что это правила сортировки я думал что это стандартная кодировка базы данных.

И Cyrillic я уж точно не переводил что это иврит.
12 мар 14, 20:17    [15713232]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
demonikx
Member

Откуда:
Сообщений: 3
o-o
если в таблицах нету типов char, varchar, а только nchar, nvarchar, то по барабану.
не забывать при вставке строк передавать их юникодом, указывая N.

если сменить сейчас коллэйшен базы:
USE [master]
GO
ALTER DATABASE [cyr] COLLATE Hebrew_CI_AS
GO


то у созданных уже таблиц он все равно не поменяется.
т.е. или писать скрипт, меняющий коллэйшен всем колонкам char, varchar,
либо заскриптовать все таблицы, сменить коллэйшен базы, дропнуть таблицы и создать их заново.

ну или, не меняя коллэйшен базы, просто всем колонкам char, varchar сменить коллэйшен



У меня в базе данных сейчас находятся int и nchar , date
Пересоздать таблицы не проблема так как они пустые.

Неужели нет какой либо Общей юникод кодировки ибо в будушем проэкт будет расширяться придется добавить и третий язык

в конечном итоге получиться что база будет содержать три языка.
12 мар 14, 20:23    [15713261]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
demonikx
Неужели нет какой либо Общей юникод кодировки ибо в будушем проэкт будет расширяться придется добавить и третий язык
Я же вам написал, что есть Общая Юникод-кодировка, которую можно использовать для любого существующего на планете языка.

Если вы про правила сортировки, то естественно, общих правил нету, для этого даже не нужно документации читать :-)

Фактически желание иметь несколько правил сортировки для одного поля означает, что правила сортировки вам не важны, и вы можете использовать любую. Например, Latin1_General_CI_AS, что бы хоть для английского правильно сортировалось.
12 мар 14, 22:17    [15713831]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
o-o
Guest
demonikx
o-o
если в таблицах нету типов char, varchar, а только nchar, nvarchar, то по барабану.
не забывать при вставке строк передавать их юникодом, указывая N.


Неужели нет какой либо Общей юникод кодировки ибо в будушем проэкт будет расширяться придется добавить и третий язык
в конечном итоге получиться что база будет содержать три языка.


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

alexeyvg
o-o
то у созданных уже таблиц он все равно не поменяется.
т.е. или писать скрипт, меняющий коллэйшен всем колонкам char, varchar,
либо заскриптовать все таблицы, сменить коллэйшен базы, дропнуть таблицы и создать их заново.

ну или, не меняя коллэйшен базы, просто всем колонкам char, varchar сменить коллэйшен
ИМХО лучше переустановить сервер с кодировкой Hebrew_CI_AS, потом из скриптов пересоздать базу. Если скриптов нет, сделать их перед переустановкой.


да я только "за"!!!
просто вопрос был про коллэйшен базы :)
я так и вообще люблю экзотику, и чем сносить кириллический экземпляр,
как по мне, так еще лучше еврейский параллельно поставить, у меня вон стоит греческий,
чтоб нескучно было.
вроде ж как ТС из России, чего бы и не оставить жить кириллический экземпляр,
всяко в хозяйстве пригодится
13 мар 14, 02:31    [15714621]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
nscl
Guest
Если у вас в базе даже чисто теоритически могут содержаться данные разных языков и алфавитов - то возможно только одна политика в плане кодировок - UTF-8-везде.

Всякие эти cp1251, hebrew-чего-то-там и прочие 866 должны были почить в бозе ещё лет 15 назад.

Исключение допустимо ровно одно - импорт/экспорт во внешние системы. Хранение данных в БД, их обработка, добавление/редактирование - должно быть унифицировано в плане кодировок, и лучше UTF-8 тут трудно что-то придумать.
13 мар 14, 03:37    [15714669]     Ответить | Цитировать Сообщить модератору
 Re: Ms-Sql 2012 express  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Если COLLATE базы tempdb будет отличаться от COLLATE рабочей базы,
то то и дело будут выскакивать ошибки при обработке запросов
со сравнением строковых полей.
Сервер по своему усмотрению в разных ситуациях может использовать tempdb
для своих манипуляций. Тут-то и начнётся...

Поэтому старайтесь поддерживать один и тот же COLLATE во всех базах во избежание геморроя.
13 мар 14, 09:27    [15715021]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить