Azure SQL Databaseで日本語が文字化けしてしまいました。
新規データベースと作って、ローカルデータを長時間かけてコピーしたのに…。
照合順序の設定をし忘れました。
現在の照合順序を確認するために、以下のSQLを実行しました。
結果は、「SQL_Latin1_General_CP1_CI_AS」でした。
スポンサーリンク
他の文字化けしていないデータベースで同じように確認してみたところ「SQL_Latin1_General_CP1_CI_AS」となっています。
Nプレフィックスを使っているわけでもないのに、文字化けしていません。
SQL Azureの場合、オンプレミスの場合と違い、ALTER DATABASE で COLLATE 句を使用することで作成後に照合順序を変更することができません。
「Japanese_CI_AS」を指定して新たにデータベースを作ったら、文字化けしなくなりました。
ただ、「SELECT CONVERT (varchar, SERVERPROPERTY('collation'))」の結果は「SQL_Latin1_General_CP1_CI_AS」です。
どうやら照合順序の確認方法が間違っているようです。
でcollation_nameを確認するのが正しいSQL Azureの照合順序の確認方法のようです。
文字化けしないデータベースは、全部collation_nameが「Japanese_CI_AS」になっていました。
SQL Azureにデータベース作成なんて、たまにしかしないから設定間違えていたようです。
collation_nameを更新できるか試してみました。
エラーが発生します。
システムテーブルを直接更新することはできないようです。
仕方ないので、データベースの作り直しします。
ローカルデータのコピーも20時間かかったので、バルクインサートでやるように変更します。