Если я использую имя базы данных с точкой в SQL Server (2005 или 2008), что-то вроде «MyApp.Sales», это вызовет какие-либо проблемы?
источник
Если я использую имя базы данных с точкой в SQL Server (2005 или 2008), что-то вроде «MyApp.Sales», это вызовет какие-либо проблемы?
Вы можете , но я бы не стал. Вы всегда должны заключать имя БД в квадратные скобки, такие как [MyApp.Sales].
Итак, резюмируем: если вы цените свое здравомыслие, не делайте этого.
Я думаю, что это очень плохая идея, даже если это технически возможно.
За эти годы я обнаружил, что многим людям трудно понять соглашение об именовании из четырех частей, хотя это кажется довольно очевидным:
server_name.database_name.schema_name.object_name
Представьте, что произойдет, если они увидят что-то вроде этого:
MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts
или:
[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]
Сохранять вещи простыми важно.
В случае, если кто-то еще сталкивается с этим вопросом ...
Имейте в виду, что это не только плохая идея, потому что пользователи могут быть сбиты с толку, но и потому, что некоторые инструменты могут запутаться.
Даже у самой Microsoft есть проблемы с этим. Если вы попытаетесь подключить вашу базу данных к листу Excel с помощью Microsoft Query (через ODBC), вы получите мастер настройки, который позволит вам выбрать базу данных, к которой вы хотите подключиться. Однако выбор базы данных, содержащей точку, приведет к ошибке, указывающей, что сервер не найден. Похоже, что мастер не проверяет необходимость экранирования значений и слепо объединяет идентификаторы.
Конечно, есть обходные пути, но вы избавляете себя от проблем, не делая этого с самого начала.
Не используйте точки в именах баз данных, имен публикаций, имен пользователей. И я настоятельно рекомендую никогда не использовать точку в имени (столбец, таблица, представление, база данных и т. Д.).
Обновление: я могу подтвердить, что минус, тире "-" вызывает симилические проблемы.
Вот что происходит:
SQL Server использует сценарии для внутреннего использования, такие как системные хранимые процедуры. Как уже упоминалось здесь, команды, которые вы используете, иногда вынуждают вас вводить имя в скобки, и это (серьезно?) Не всегда хорошо для использования хранимых процедур .
На самом деле я больше не могу очистить информацию об абонентах, потому что хранимая процедура перебирает все базы данных и не пропускает имена баз данных заранее. Эта итерация настолько сложна, что я не смог ее исправить в более чем 8 SP.
Кроме того, я не могу использовать MMC или сценарии для редактирования конфликтов репликации . Если у вас есть одна (Одна!) База данных, в имени которой есть точка, эти проблемы будут возникать на everey db, в каждой публикации.
Вот такие у меня случаи. Сложные действия SQL обрабатываются на языке SQL и будут работать нормально, если база в порядке.
Если вы попытаетесь подключить вашу базу данных к листу Excel с помощью Microsoft Query (через ODBC), вы получите мастер настройки, который позволит вам выбрать базу данных, к которой вы хотите подключиться. - aKzenT
Эти ошибки чаще встречаются в стороннем программном обеспечении, поэтому никогда не используйте точки в каждом имени чего-либо на сервере sql.
В именах допускается много символов, но общепринятый и здравый смысл ограничивает использование специальных символов. '_' (подчеркивание) - это самый надежный разделитель, который обеспечивает удобство чтения.
То же самое: имя внешнего ключа не должно содержать никаких точек.
Я обнаружил, что если вам нужно переименовать такое имя, вам понадобятся скобки для sp_rename
работы (потому что при переименовании внешнего ключа вам нужно указать схему).
Пример:
sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'
Если вы забудете скобки, вы получите ошибку: 15225
Один из наших поставщиков решил ввести имя схемы: [System.Activities.DurableInstancing]. Он сломал наш инструмент для загрузки данных, так что теперь у нас есть дальнейшее развитие, чтобы справиться с их странностями. Просто не делай этого. Использовать '-'.
-
если вы можете использовать подчеркивание_
и вообще не заключать имя в квадратные скобки?