Відповіді:
Ви можете , але я б не став. Ви завжди повинні обгорнути ім'я БД квадратними дужками, такими як [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]. Він зламав наш інструмент для завантаження даних, тому ми маємо подальший розвиток, щоб впоратися з їх дивацтвом. Просто не роби цього. Використовуйте "-".
-
коли ви можете використовувати підкреслення_
і взагалі не потрібно вкладати ім’я у квадратні дужки?