Безопасно ли конвертировать varchar и char в nvarchar и nchar в SQL Server? - PullRequest
1 голос
/ 05 августа 2009

В настоящее время в базе данных имеется ряд столбцов типа varchar. Приложение, которое использует их, находится на C #, и оно использует Linq2Sql для связи (или как это назвать).

Мы хотели бы поддерживать символы Юникода, а это значит, что мы должны преобразовать столбцы varchar в nvarchar. Это безопасная операция? Это просто вопрос изменения типа столбца и обновления файла dbml, или нужно сделать еще кое-что? Какие-либо изменения в коде C #? Нужно ли каким-то образом преобразовывать текст, который уже существует в базе данных, вручную или он обрабатывается для меня?

Ответы [ 5 ]

2 голосов
/ 05 августа 2009

Также имейте в виду, что максимальная длина столбца nvarchar равна 4000, что составляет половину от 8000 varchar.

2 голосов
/ 05 августа 2009

Это должно быть довольно безопасно сделать от varchar / char до nvarchar / nchar. Я делал это несколько раз и не испытывал никаких проблем. Но это основано только на моем опыте!

0 голосов
/ 13 июля 2010

Вероятно, это не проблема, поскольку я предполагаю, что вы собираетесь перейти с ASCII, ISO-8859-1 (или чего-то подобного) на UTF-8, но если нет, убедитесь, что вы знаете, какой процесс SQL Server использует для настройки правильная кодировка при изменении таблицы.

0 голосов
/ 05 августа 2009

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

Что касается преобразования, то будут затронуты индексы и ограничения FK (если таковые имеются) для задействованных столбцов, поэтому вам необходимо написать сценарий их удаления и повторного создания при необходимости ...

0 голосов
/ 05 августа 2009

Помимо незначительного влияния на глобальную производительность, которое не должно иметь значения, если вы не можете его измерить, это может повлиять на производительность из-за того, что планы запросов отличаются, если вы внезапно отправляете несовместимые типы. Но если вы используете nvarchar по всем направлениям, этого не должно произойти (и в целом это более вероятно, если вы отправляете varchars во что-то, что будет обрабатывать его как nvarchar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...