SQL Azure での日本語の扱いには N プレフィックスが必須!

SQL Azure は、「照合順序を指定しないと日本語化けます!」と自信を持って言い切っている人たちが結構いらっしゃるんですが、その方々は、私の執筆した自習書(SQL Azure 入門)をミスリードしております。
データ型が、char varchar の場合は、照合順序を指定しないと日本語が化けてしまうのですが、nchar nvarchar などの Unicode データを格納できるデータ型を選択している場合は、照合順序を指定しなくても日本語を正しく格納することができます(N プレフィックスを付けた場合)。
SQL Azure の既定の照合順序は、SQL_Latin1_General_CP1_CI_AS ですが、この照合順序でも、nchar や nvarchar であれば日本語を正しく格納することができます。照合順序は、あくまでも比較と並べ替えでのみ利用される機能になります。


■ 結局、SQL Azure で日本語が化けないようにするには何が必要?
結局、SQL Azure で日本語が化けないようにするには、N プレフィックスのみが必須です。N プレフィックスは、その文字列が Unicode データですよ、と指定するためのものです。ですので、nchar や nvarchar データ型の列に対して、N プレフィックスを利用することで、Unicode データとして日本語を正しく格納できることになります。そして、比較や並べ替えのために、照合順序に任意のものを選択することが可能です。


弊社執筆の「SQL Azure 入門」の自習書は、こちらからダウンロードできます。
http://www.microsoft.com/japan/sqlserver/2008/r2/technology/self-learning.mspx