Как установить параметры сортировки UTF-8 для базы данных SQL Azure?UTF-8 отсутствует в списке поддерживаемых параметров сортировки - PullRequest
0 голосов
/ 28 октября 2018

В настоящее время я использую MySQL с utf8mb4_unicode_ci и изучаю, как импортировать данные в базу данных Azure MSSQL

Согласно этой документации;

https://azure.microsoft.com/en-us/blog/working-with-collations-in-sql-azure/

В нем говорится, что я могу использовать значение по умолчанию SQL_Latin1_General_CP1_CI_AS только на уровне сервера и базы данных, но я могу изменить его на уровне объекта;

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

Однако, когда я запускаю:

SELECT * FROM sys.fn_helpcollations();

в MSSQL Server Management Studio, я получаю огромный список поддерживаемых

enter image description here

Но никто в этом списке даже не содержит UTF-8.

Я новичок в MS SQL, что яотсутствует?Мне трудно поверить, что MS SQL не может обрабатывать UTF-8?

1 Ответ

0 голосов
/ 28 октября 2018

Исторически SQL Server использовал отдельный тип данных NVarchar для хранения Unicode, который использует кодировку UTF-16.Для таблиц со сжатием строк и страниц SQL Server использует Сжатие Unicode , поэтому общие символы хранятся с использованием одного байта.Поэтому в настоящее время вы должны преобразовать столбцы в Nvarchar и, возможно, включить сжатие строк в ваших больших таблицах. Сжатие строк недорогое, просто использует хранилище переменной ширины для всех типов данных.

SQL Server 2019 добавляет кодировку UTF-8 для типов Varchar, в основном для созданияэти виды преобразований проще.Это еще не было внедрено в базу данных SQL Azure, но я ожидаю, что это произойдет до выпуска SQL Server 2019.

Таким образом, вы должны просто выбрать совместимое сопоставление базы данных, чтобы строки сортировались и сравнивались аналогично этому сопоставлению MySQL.Беглый взгляд на документы показывает, что SQL_Latin1_General_CP1_CI_AI может быть правильным сопоставлением, так как он не учитывает регистр и акцент.Конечно, вы можете предпочесть сортировку с учетом акцента, которая используется по умолчанию в SQL Server.

EG

CREATE DATABASE MyDatabase  
COLLATE SQL_Latin1_General_CP1_CI_AI
(
  EDITION = 'Standard',   
  SERVICE_OBJECTIVE = 'S1'
);

Затем для любого столбца, в котором будут храниться символы, которые не могут быть сохраненыв столбце varchar с этим сопоставлением измените типы данных на NVarchar.

Вот список печатных символов, которые можно сохранить в Varchar (N) с этим сопоставлением.

!,",#,$,%,&;,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<;,=,>;,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,€,‚,ƒ,„,…,†,‡,ˆ,‰,Š,‹,Œ,Ž,,,‘,’,“,”,•,–,—,˜,™,š,›,œ,ž,Ÿ, ,¡,¢,£,¤,¥,¦,§,¨,©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,×,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ

Если вы в основном используете другой язык, вы можете выбрать другой порядок сортировки, который будет иметь разные правила сравнения и сортировки и может хранить другое подмножество символов Юникода в столбце Varchar.

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