SQL Server 2019 プレビューで UTF-8 をサポート

執筆者: PEDRO LOPES (Senior Program Manager, SQL Server)

このポストは、2018 年 12 月 18 日に投稿された Introducing UTF-8 support in SQL Server 2019 preview の翻訳です。

 
SQL Server 2019 パブリック プレビューの初回リリース (英語) では、文字列データのインポートやエクスポートのエンコード、データベース レベルや列レベルの照合順序で UTF-8 を広く使用できるようになったことを発表しました。これは、ビジネスを世界規模に拡大したいと考えている企業のお客様にとって重要な資産です。なぜなら、顧客のニーズや特定の市場の規制に対応するためには、多言語に対応したグローバルなデータベース アプリケーションやサービスが必要だからです。UTF-8 がサポートされたことは、レガシ アプリケーションを国際化したり、インライン クエリを使用したりする場合にメリットがあります。アプリケーションとその基盤となるデータベースを UTF-16 に変換するには、アプリケーションのパフォーマンスにかかわる複雑な文字列処理ロジックが必要で、幾度にもわたる変更やテストが伴い、コストがかかります。

既存の CHAR 型と VARCHAR 型のデータで UTF-8 が使用できるようになると、上記のシナリオで必要な変更を減らすことができます。「UTF8」をサフィックスに持つ照合順序をオブジェクトに新たに付与するか、変更すると (たとえば、LATIN1_GENERAL_100_CI_AS_SC から LATIN1_GENERAL_100_CI_AS_SC_UTF8)、文字列データは自動的に UTF-8 にエンコードされます。この変更による影響の詳細については、「データベースの照合順序の設定または変更」と「列の照合順序の設定または変更」を参照してください。なお、NCHAR と NVARCHAR で使用できるエンコードは従来どおり UTF-16 のみですのでご注意ください。

UTF-8 を使用できるのは、SQL Server 2012 で導入された補助文字をサポートしている Windows の照合順序のみです。SQL Server 2019 CTP で以下のコマンドを実行すると、使用可能な UTF-8 の照合順序をすべて表示できます。

 
SELECT Name, Description FROM fn_helpcollations()

WHERE Name like '%UTF8';

データセットで主にラテン文字が使用されている場合、UTF-16 のデータ型と比較すると大幅にストレージを節約できる場合があります。たとえば、既存の列のデータ型を NCHAR(10) から UTF-8 が有効な照合順序で CHAR(10) に変更すると、ストレージ使用量が約 50% 削減されます。NCHAR(10) ではストレージ容量を 22 バイト使用しますが、CHAR(10) では同じ Unicode 文字列で 12 バイトしか使用しません。

使用を開始するには