(とりわけ) 新しい SQL Server データベースを作成するツールをクライアントに提供する予定であり、クライアントが提供するデータベース名に対して基本的な検証を実行できるようにしたいと考えています。SQL Server のドキュメントでは、データベース名で有効な文字について説明しています。ただし、文書化された規則に違反する名前のデータベースを正常に作成できるため、文書化は明らかに間違っています。
CREATE DATABASEに関する SQL Server のドキュメントによると、データベース名は識別子の規則に従う必要があります。識別子のルールは、データベースの互換性レベルによって異なります。_
互換性レベルが 100 (SQL Server Management Studio によれば、"SQL Server 2008" を意味します) の場合、名前は Unicode 文字、、、@
または#
;で始まる必要があります。その後に1 つ以上@
の文字、数字、、、、、または が続きます。ドキュメントには、スペースや特殊文字の埋め込みは許可されていないと明記されています。$
#
_
SQL Server Management Studio を使用して、This & That | "Other"
埋め込みスペース (明示的に禁止されている) だけでなく、特殊文字 ( |
, "
) を含む名前のデータベースを作成できるため、これは利用可能な証拠に反していますファイル名で有効です。確認したところ、データベースの互換性レベルは実際には「SQL Server 2008 (100)」ですが、その名前はその互換性レベルでは無効であると文書化されています。
なんと、最初の文字が文字、アンダースコア、アットマーク、またはポンド記号である必要がないCREATE DATABASE " "
ことを証明することもできます (はい、それは単一のスペースです) 。
私の質問は、SQL Server データベース名で有効な文字は何ですか? SQL Server の実際の動作と一致する文書化されたルールはありますか?