👌
Azure SQL Database でデータベースオブジェクトの大文字小文字を区別する方法
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