👌

Azure SQL Database でデータベースオブジェクトの大文字小文字を区別する方法

2021/12/03に公開

Azure Portal から SQL Database を作成するときに照合順序を指定できますが、ここで CS 付きの照合順序、例えば Japanese_CS_AS_KS_WS を指定しても、データベースオブジェクトの大文字小文字を区別できません。

例えば以下の SQL 文を流すと、2つ目の SQL 文ではエラーになります。

CREATE TABLE TAB1 (col1 varchar(1))
GO
CREATE TABLE tab1 (col1 varchar(1))
GO

データベースオブジェクトの大文字小文字を区別するためには、Azure Portal からではなく、T-SQL もしくは CLI で作成する必要があります。

T-SQL では COLLATE オプションで CS 付きの照合順序、CATALOG_COLLATION オプションで DATABASE_DEAFULT を指定して作成します。

T-SQL の例:

CREATE DATABASE testdb01
COLLATE Japanese_CS_AS_KS_WS (MAXSIZE = 100 MB, EDITION = 'Basic')
WITH CATALOG_COLLATION = DATABASE_DEFAULT

CLI で作成する場合には、 collation オプションに CS 付きの照合順序、catalog-collation オプションに DATABASE_DEFAULT を指定して作成します。

CLI の例:

az sql db create --name $database --server $server --resource-group $resource --edition Basic --collation "Japanese_CS_AS_KS_WS" --catalog-collation DATABASE_DEFAULT 

これでデータベースオブジェクトに対して大文字小文字の区別が付くようになり、以下の2つの SQL 文を実行することができます。

CREATE TABLE TAB1 (col1 varchar(1))
GO
CREATE TABLE tab1 (col1 varchar(1))
GO

Discussion