SQL Azure照合順序の基礎

SQL Azureの照合順序を再確認しました!
1
Takahiro Matsumoto @matu_tak

SQL Azure は、varchar の扱いが本当に難しい。せっかく varchar で定義しても、アプリケからは nvarchar として利用しないといけない(日本語の扱いに N プレフィックスが必須)。これだと CONVERT_IMPLICIT が発生してしまう。

2010-08-16 06:05:47
Takahiro Matsumoto @matu_tak

SQL Azure で varchar で定義すると、LINQ to SQL や ADO.NET Entity Framework からは、日本語の扱いが.... varchar 定義には、(内部的に) N プレフィックスが付いてないので。。

2010-08-16 06:07:42
Takahiro Matsumoto @matu_tak

N プレフィックスは、Unicode 指定のためのプレフィックスだから当然なのだけど。。

2010-08-16 06:08:12
Takahiro Matsumoto @matu_tak

nvarchar にすると、varchar よりも性能が出せないから、nvarchar は使いたくない。でも、SQL Azure で varchar に使おうとすると、パラメーターに nvarchar を指定しないといけないから暗黙の型変換のオーバーヘッドが発生する。悩ましい

2010-08-16 06:11:07
Takahiro Matsumoto @matu_tak

暗黙の型変換については、TechEd セッション「T4-305」でご紹介します。

2010-08-16 06:13:07
Takahiro Matsumoto @matu_tak

SQL Azure は、「照合順序を指定しないと日本語化けます!」と自信を持って言い切っている人たちは、私の執筆した自習書をミスリードしております。エバの方々、ご注意くださいませ m(_ _)m

2010-08-16 06:27:31
Takahiro Matsumoto @matu_tak

SQL Azure は、nvarchar なら、既定の照合順序 SQL_Latin1_General_CP1_CI_AS でも日本語化けません。N プレフィックスは必須です。

2010-08-16 06:28:43
Takahiro Matsumoto @matu_tak

SharePoint も SQL_Latin1_General_CP1_CI_AS ですしね。

2010-08-16 06:30:27
Takahiro Matsumoto @matu_tak

だからと言って、照合順序を指定しなくて良い! という意味ではないです。140字だと、説明的なものは、説明しづらい。。

2010-08-16 06:32:06
Hiroyuki Mori @hiroyuki_mori

心配なので確認ですがSQL AzureがSQL_Latin1_General_CP1_CI_ASということは照合順序の指定で変わるのはテーブルに対してのSQLのソートや比較だけですよね? QT @matu_tak: SQL Azure は、nvarchar なら、既定の照合順序

2010-08-16 06:46:03
Takahiro Matsumoto @matu_tak

@hiroyuki_mori はい! ソートと比較のためだけのものです (^^

2010-08-16 06:53:51