Sql server collation изменить

  • Как изменить collation
  • Как очистить таблицу в sql
  • Как изменить кодировку текстового файла

Измените схемы сопоставления методом запуска команды setup.exe с загрузочного диска Microsoft SQL Server с ключом:

setup.exe /qn InctanceName=MSSQLServer Reinstall=SQL_Engine Rebuilddatabase=1 SAPWD=новый_пароль SA SQLCollation=новая_схема_сопоставления (для Microsoft SQL Server 2005).

Используйте следующий SQL-запрос для изменения collation по умолчанию – Cyrillic_General_CI_AS:

ALTER DATABASE имя_базы_данных_подлежащей_изменению COLLATE имя_необходимой_кодировки.

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

ALTER DATABASE имя_базы_данных_подлежащей_изменению Set Single_User with Rollback Immediate
ALTER DATABASE имя_базы_данных_подлежащей_изменению COLLATE имя_необходимой_кодировки
ALTER DATABASE имя_базы_данных_подлежащей_изменению Set Multi_User.

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

В этом разделе описано, как задать и изменить параметры сортировки базы данных в SQL Server 2019 (15.x) SQL Server 2019 (15.x) с помощью среды SQL Server Management Studio SQL Server Management Studio или Transact-SQL Transact-SQL . This topic describes how set and change the database collation in SQL Server 2019 (15.x) SQL Server 2019 (15.x) by using SQL Server Management Studio SQL Server Management Studio or Transact-SQL Transact-SQL . Если параметры сортировки не указаны, используются параметры сортировки сервера. If no collation is specified, the server collation is used.

После создания базы данных в База данных SQL Azure Azure SQL Database параметры сортировки невозможно изменить, используя SQL Server Management Studio SQL Server Management Studio . Collation cannot be changed using SQL Server Management Studio SQL Server Management Studio after database has been created on База данных SQL Azure Azure SQL Database . Их можно изменить только с помощью Transact-SQL Transact-SQL . It can be changed only through Transact-SQL Transact-SQL .

В этом разделе In This Topic

Перед началом работы Before you begin:

Задание и изменение параметров сортировки базы данных с помощью: To set or change the database collation, using:

Перед началом Before You Begin

Ограничения Limitations and Restrictions

Параметры сортировки Windows только для Юникода могут использоваться лишь с предложением COLLATE для применения параметров сортировки к данным типов nchar, nvarcharи ntext на уровне столбца и на уровне выражения. Windows Unicode-only collations can only be used with the COLLATE clause to apply collations to the nchar, nvarchar, and ntext data types on column level and expression-level data. Их нельзя использовать с предложением COLLATE для изменения параметров сортировки базы данных или экземпляра сервера. They cannot be used with the COLLATE clause to change the collation of a database or server instance.

Если указанные или используемые объектом по ссылке параметры сортировки используют кодовую страницу, не поддерживаемую Windows, то компонент Компонент Database Engine Database Engine выдаст ошибку. If the specified collation or the collation used by the referenced object uses a code page that is not supported by Windows, the Компонент Database Engine Database Engine displays an error.

После создания базы данных в База данных SQL Azure Azure SQL Database параметры сортировки невозможно изменить, используя SQL Server Management Studio SQL Server Management Studio . Collation cannot be changed using SQL Server Management Studio SQL Server Management Studio after database has been created on База данных SQL Azure Azure SQL Database . Их можно изменить только с помощью Transact-SQL Transact-SQL . It can be changed only through Transact-SQL Transact-SQL .

Читайте также:  I mi com на русском разблокировать телефон

Рекомендации Recommendations

Если изменяются параметры сортировки базы данных, то изменяется следующее: When you change the database collation, you change the following:

Все столбцы типа char, varchar, text, nchar, nvarcharили ntext в системных таблицах заменяются новым параметром сортировки. Any char, varchar, text, nchar, nvarchar, or ntext columns in system tables are changed to the new collation.

Все существующие параметры типа char, varchar, text, nchar, nvarcharили ntext и возвращаемые скалярные значения для хранимых процедур и определяемых пользователем функций заменяются новым параметром сортировки. All existing char, varchar, text, nchar, nvarchar, or ntext parameters and scalar return values for stored procedures and user-defined functions are changed to the new collation.

Системные типы данных char, varchar, text, nchar, nvarcharили ntext и все определяемые пользователем типы данных, основанные на этих системных типах данных, заменяются новым параметром сортировки по умолчанию. The char, varchar, text, nchar, nvarchar, or ntext system data types, and all user-defined data types based on these system data types, are changed to the new default collation.

Вы можете изменить параметры сортировки любых новых объектов, созданных в пользовательской базе данных, с помощью предложения COLLATE инструкции ALTER DATABASE. You can change the collation of any new objects that are created in a user database by using the COLLATE clause of the ALTER DATABASE statement. Эта инструкция не изменяет параметры сортировки столбцов в любых существующих пользовательских таблицах. This statement does not change the collation of the columns in any existing user-defined tables. Они могут быть изменены с помощью предложения COLLATE инструкции ALTER TABLE. These can be changed by using the COLLATE clause of ALTER TABLE.

безопасность Security

Permissions Permissions

Чтобы создать базу данных, требуется разрешение CREATE DATABASE в базе данных master, разрешение CREATE ANY DATABASE либо ALTER ANY DATABASE . To create a new database, requires CREATE DATABASE permission in the master database, or requires CREATE ANY DATABASE , or ALTER ANY DATABASE permission.

Чтобы изменить параметры сортировки имеющейся базы данных, требуется разрешение ALTER в базе данных. To change the collation of an existing database, requires ALTER permission on the database.

Использование среды SQL Server Management Studio Using SQL Server Management Studio

Задание и изменение параметров сортировки базы данных To set or change the database collation

В обозревателе объектовподключитесь к экземпляру компонента Компонент SQL Server Database Engine SQL Server Database Engine , разверните его, а затем разверните узел Базы данных. In Object Explorer, connect to an instance of the Компонент SQL Server Database Engine SQL Server Database Engine , expand that instance, and then expand Databases.

При создании новой базы данных щелкните правой кнопкой мыши Базы данных и выберите пункт Создать базу данных. If you are creating a new database, right-click Databases and then click New Database. Если использовать параметры сортировки по умолчанию не нужно, то перейдите на страницу Параметры и выберите нужный вариант в раскрывающемся списке Параметры сортировки . If you do not want the default collation, click the Options page, and select a collation from the Collation drop-down list.

Если база данных уже существует, щелкните правой кнопкой мыши нужную базу данных и выберите пункт Свойства. Alternatively, if the database already exists, right-click the database that you want and click Properties. Перейдите на страницу Параметры , а затем выберите нужный вариант в раскрывающемся списке Параметры сортировки . Click the Options page, and select a collation from the Collation drop-down list.

По завершении нажмите кнопку ОК. After you are finished, click OK.

Использование Transact-SQL Using Transact-SQL

Задание параметров сортировки базы данных To set the database collation

Установите соединение с компонентом Компонент Database Engine Database Engine . Connect to the Компонент Database Engine Database Engine .

На панели «Стандартная» нажмите Создать запрос. From the Standard bar, click New Query.

Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. Copy and paste the following example into the query window and click Execute. В этом примере показано задание параметров сортировки с помощью предложения COLLATE . This example shows how to use the COLLATE clause to specify a collation name. В примере создается база данных MyOptionsTest , в которой используются параметры сортировки Latin1_General_100_CS_AS_SC . The example creates the database MyOptionsTest that uses the Latin1_General_100_CS_AS_SC collation. Чтобы проверить параметр, после создания базы данных выполните инструкцию SELECT . After you create the database, execute the SELECT statement to verify the setting.

Читайте также:  Установка ssd в нетбук

Изменение параметров сортировки базы данных To change the database collation

Установите соединение с компонентом Компонент Database Engine Database Engine . Connect to the Компонент Database Engine Database Engine .

На панели «Стандартная» нажмите Создать запрос. From the Standard bar, click New Query.

Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. Copy and paste the following example into the query window and click Execute. В этом примере показано изменение имени параметров сортировки с помощью предложения COLLATE в инструкции ALTER DATABASE . This example shows how to use the COLLATE clause in an ALTER DATABASE statement to change the collation name. Выполните инструкцию SELECT , чтобы проверить изменение. Execute the SELECT statement to verify the change.

Статья подготовлена для студентов курса «MS SQL Server разработчик»
Хочу поделиться историей из одного из предыдущих проектов, которая иллюстрирует, что Collation нужно выбирать очень вдумчиво. И о том, что бывает, если этот параметр все-таки выбрали неверно, и какие варианты решения проблемы бывают.

Сначала небольшое введение о том, что же такое Collation. В SQL Server параметр Collation указывает серверу, как нужно сортировать и сравнивать строки. Вот, например, строки “Apple” и “apple”. Они разные или нет? Это зависит от указанного Collation. Если с регистром все более менее понятно, то что делать с примером “елка” и “ёлка”? Считать их как одинаковые или как разные? Это все тоже в Collation.

История случилась в проекте, функционал которого очень похож на DropBox или Google Диск. Он предоставляет возможность управлять своими синхронизированными папками и файлами на разных машинах, а также возможность другим пользователям иметь доступ к данной синхронизированной папке.

Итак, история началась с того, что на Prod серверах было 75-90% ошибок в логах (см скриншот ниже), и непонятно откуда они возникали, и в чем была их причина. Ошибка звучала так: “ReadWrtLst is not complete”. Далее шли детали пользователя и его папки.

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

Мы собрали информацию по пользователям, по которым выдается эта ошибка. И тут нас ждал первый сюрприз: из миллионов пользователей системы эта ошибка случалась всего у 50. И эти 50 пользователей генерируют 90% логов об ошибках. Так как ситуацию не получалось воспроизвести, то мы решили связаться с одним из пользователей и выяснить, по какой причине у него не синхронизируется одна из папок. Папка выглядела для нас так же, как и другие, единственное отличие было в том, что называлась она на языке пользователя с использованием иероглифов. А пользователь был японцем. К слову сказать, среди этих 50 пользователей, японцев было большинство.

Благодаря одному из разработчиков команды, нам удалось воспроизвести ошибку. Ошибка заключалась в том, что операционная система считала названия папок разными, а SQL Server считал их одинаковыми из-за выбранного Collation.

Collation, который использовался в проекте:
SQL_Latin1_General_CP1_CI_AS

Небольшое отступление о том, как прочесть Collation. (Если вы знакомы с ним, смело пропускайте.)

Итак, в Collation есть несколько частей:

  • SQL — параметры сортировки по SQL Server (SQL в начале Collation) или Windows (тогда было бы просто Latin1_ …);
  • Latin1_General — локаль или используемый язык;
  • CP1 — code page — кодовая страница;
  • CI — Case Insensitive — без учета регистра;
  • AS — Accent Sensitive — с учетом аксонов или диакритических знаков, проще говоря ‘a’ не считается равным ‘ấ’.
Читайте также:  Угадай кто 30 уровень ответы

Этот Collation был когда-то Collation по умолчанию, когда устанавливали SQL Server.

Какие опции есть еще?

  • _KS — с учетом японских иероглифов хирагана и катакана, если параметр не выбран, то SQL Server будет интерпретировать иероглифы хирагана и катакана как одинаковые.
  • _WS — с учетом ширины символов, если параметр не выбран, то “Text” и “T e x t” считаются одинаковыми строками.
  • _VSS — с учетом знаков выбора варианта написания в японском языке, появился с версии 2017.
  • _UTF8 — позволяет хранить данные в UTF8.

Все текстовые поля в БД использовали тип NVARCHAR.
Получается, что, так как текущий Collation игнорировал разницу написания японских иероглифов и разницу в ширине символов, то SQL Server сравнивал строки не так, как это делала операционная система, что и вызывало проблему, т.е. пользователь мог создать папки, не мог их добавить в систему для синхронизации. Тоже самое возникло бы в дальнейшем при сравнении имен файлов.

Мы стали думать о том, как можно решить данную проблему и изменить Collation.

Collation можно выставлять на нескольких уровнях:

При этом, не рекомендуется иметь внутри БД разные Collation, потому что каждый раз при сравнении строк с разным Collation нужно будет делать преобразование с помощью COLLATE, указывая серверу, какой порядок сравнения ему нужно использовать.

Какие опции есть в ситуации, когда понятно, что Collation выбран не очень правильно?

  1. Изменить Collation на уровне БД;
  2. Изменить Collation на уровне поля (в нашем случае не было смысла менять для всей таблицы);
  3. Добавить поле Varbinary, в которое записывать дубликат из поля с названием папки, и использовать именно его для сравнения;
  4. Сказать пользователям, что есть ограничения на поддержку символов в названиях директорий.

Первая опция — изменение Collation на уровне БД — наиболее сложна. В случае с БД потребовалось бы пересоздать базу данных и перезалить туда данные. Так как система работала 24/7, эта опция была отвергнута сразу.

Вторая опция про изменение поля: самый простой вариант ее реализовать — это добавить поле с нужным Collation и туда перенести данные. Но тогда нужно будет изменять код в БД, который работает с этим полем, а кода в БД было очень много.

Третья опция понравилась нам больше всего, так как в теории это вносило меньше всего изменений, так как основное поле продолжало бы существовать с текущим Collation, и мы бы не имели проблем с его преобразованием, при этом весь нужный функционал в виде учета японской азбуки или широких символов бы работал. Минус в том, что нужно было вносить изменения в часть ПО, но так как эта серверная часть, это можно было сделать.

Четвертая опция была наиболее простой в данном случае, потому что общее число пользователей было несколько миллионов, а проблема возникала только у 50. Однако, если бы приложение активно использовалось в Японии, данное решение было бы мало применимо.

После представления данных руководству, было решено известить пользователей о том, что ПО не поддерживает ряд символов, и при их использовании в названии синхронизируемых файлов и папок ПО может работать некорректно. Это временное решение, потому что при дальнейшем распространении, количество пользователей, сталкивающихся с подобной проблемой, будет нарастать, и нужно будет что-то менять, используя первые три опции.

Лучший вариант выбора Collation — исходить из требований вашего приложения. Если вам нужно, чтобы SQL Server сравнивал строки так же как ОС, то Collation по умолчанию точно неверен. К сожалению, такие нюансы редко видны на старте проекта при проектировании системы, но, надеюсь, прочитав статью, Вы вспомните об описанной ситуации и не наступите на подобные грабли сами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector