Мы собираемся предоставить нашим клиентам инструмент, который (среди прочего) создает новую базу данных SQL Server, и я хочу иметь возможность выполнять базовую проверку имени базы данных, которое они предоставляют.Документация по SQL Server объясняет, какие символы допустимы в имени базы данных.Однако документация явно неверна, поскольку я могу успешно создавать базы данных, имена которых нарушают документированные правила.
В соответствии с документацией SQL Server для CREATE DATABASE , имена баз данных должны соответствовать правилам дляидентификаторы;и правила для идентификаторов зависят от уровня совместимости базы данных.Когда уровень совместимости равен 100 (что, согласно SQL Server Management Studio, означает «SQL Server 2008»), имя должно начинаться с буквы Unicode, _
, @
или #
;за которыми следуют одна или несколько букв, цифр, @
, $
, #
или _
.В документации четко указано, что встроенные пробелы или специальные символы недопустимы.
Это противоречит имеющимся доказательствам, поскольку я могу использовать SQL Server Management Studio для создания базы данных с именем This & That | "Other"
-который не только содержит встроенные пробелы (явно запрещенные), но и содержит специальные символы (|
, "
), которые даже не допустимы в имени файла.Я проверил, и уровень совместимости базы данных действительно равен «SQL Server 2008 (100)», хотя на этом уровне совместимости задокументировано, что его имя недопустимо.
Черт, я даже могу сделать CREATE DATABASE " "
(да(это один пробел), который доказывает, что первый символ не должен быть буквой, подчеркиванием, знаком или знаком фунта.
Так что я думаю, что мой вопрос в том, чтосимволы допустимы в имени базы данных SQL Server?Существуют ли документированные правила, которые соответствуют фактическому поведению SQL Server?