Azure SQL Database を使用する時の考慮事項

DB 作成時の照合順序の初期値が SQL_Latin1_General_CP1_CI_AS

照合順序を初期値のまま DB 作成すると、varchar 型の列に日本語 (2 バイト文字) を入れると文字化けする。 2 バイト文字は必ず nvarchar の列に入れるなどのルールであれば問題ないが、そうでなければ、日本語用の照合順序で作成しておくのが無難。 なお、照合順序は後から変更することが出来ないため、作成後に変更したい場合は DB の作り直しになる。

照合順序については varchar 型に入る文字種別の他、大文字小文字の区別やアクセント記号の区別などもあり、これは検索時の判定やユニークキーの判定などにも影響するので、十分考慮する必要がある。 例えば、日本語既定値の Japanese_CI_AS はアルファベットの大文字小文字を区別しないので、検索時に A と a は同じ文字としてヒットするし、ユニークキーでも同様の扱いになる。

2 文字目が "I" は「識別しない」、"S" は「識別する」を示すので、大文字小文字、濁点、カナ、全角半角を全て区別するのであれば、照合順序は Japanese_CS_AS_KS_WS となる。

日時の扱いは UTC

照合順序の初期値と似たような話だが、クラウド上に存在する PaaS の宿命みたいなもの。

ファイアウォールによる送信元 IP 制限が常に有効

クラウド上に配置された DB なのである意味当然かもしれないが、ホワイトリスト形式のファイアウォール IP 制限が既定でかけられている。 アクセス元の IP が動的に変わる場合は都度当該 IP が通るように構成し直す必要があるので、注意。 なお、通常の IP フィルタとは別に「Azure サービスへのアクセスを許可」と言う設定が用意されており、この設定をオンにすることで、「全ての Azure リソース」からのアクセスを許可することが出来る。 Azure Web Apps だろうが Azure 仮想マシンだろうが Azure リソースからの通信については全ての許可することになり、自分が管理している Azure リソース以外も許可されるので、扱いには注意。 ただ、後述するように、Azure SQL Database の機能のいくつかはこの設定がオンである事を前提としているため、単純にセキュリティだけ考慮してオフにすると、必要な機能が使用できなくなる可能性があるので、注意。

VNET に接続する方法もあるようだが、自分は動作未確認。

ファイアウォールの「全ての Azure リソース」がオンになっていないと使用できない機能がある

Azure ポータルから使用できる機能のいくつかは、別の Azure リソースからの操作となるようで、Azure リソースからの接続が許可されている必要がある。

データベースのバックアップは自動で行われている

一番安い Basic プランでも一週間前まではいつでも復帰可能。手動でのバックアップももちろん可能。

master データベースは基本的に操作できない

少なくとも、Azure ポータルからは master データベースを選択しての操作は、基本的に出来ない。 そのため、Azure SQL Database の機能の一つであるアラート機能なども、master データベースに対しては利用できない。

SSMS から直接操作することは、可能。