Jeśli użyję nazwy bazy danych z kropką w SQL Server (2005 lub 2008), coś takiego jak „MyApp.Sales”, czy spowoduje to jakieś problemy?
źródło
Jeśli użyję nazwy bazy danych z kropką w SQL Server (2005 lub 2008), coś takiego jak „MyApp.Sales”, czy spowoduje to jakieś problemy?
Państwo może , ale ja nie. Zawsze będziesz musiał zawinąć nazwę DB w nawiasy kwadratowe, takie jak [MyApp.Sales].
Podsumowując: jeśli cenisz swoje zdrowie psychiczne, nie rób tego.
Myślę, że to bardzo zły pomysł, nawet jeśli jest to technicznie możliwe.
Przez lata dowiedziałem się, że wiele osób ma problemy ze zrozumieniem czteroczęściowej konwencji nazewnictwa, chociaż wydaje się to dość oczywiste:
server_name.database_name.schema_name.object_name
Wyobraź sobie, co się stanie, jeśli zobaczą coś takiego:
MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts
lub:
[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]
Utrzymanie prostoty jest ważne.
Na wypadek, gdyby ktoś napotkał to pytanie ...
Pamiętaj, że nie jest to zły pomysł, ponieważ użytkownicy mogą być zdezorientowani, ale także dlatego, że niektóre narzędzia mogą się mylić.
Nawet sam Microsoft ma z tym problemy. Jeśli spróbujesz połączyć bazę danych z arkuszem programu Excel za pomocą Microsoft Query (przez ODBC), otrzymasz kreatora konfiguracji, który pozwala wybrać bazę danych, z którą chcesz się połączyć. Jednak wybranie bazy danych zawierającej kropkę spowoduje błąd informujący, że nie można znaleźć serwera. Wygląda na to, że kreator nie sprawdza, czy wartości wymagają ucieczki, i ślepo łączy identyfikatory.
Istnieją oczywiście obejścia, ale oszczędzasz sobie kłopotów, nie robiąc tego od samego początku.
Nie używaj kropki w nazwach baz danych, nazwach publikacji, nazwach użytkowników. I zdecydowanie zalecam, aby nigdy nie używać kropki w nazwie (kolumna, tabela, widok, baza danych itp.).
Aktualizacja: Potwierdzam, że minus, myślnik „-” powoduje podobne problemy.
Oto co się dzieje:
SQL Server używa skryptów do użytku wewnętrznego, takich jak systemowe procedury składowane. Jak już wspomniano tutaj, używane polecenia czasami zmuszają cię do umieszczenia nazwy w nawiasach, a to (poważnie Microsoft?) Nie jest (zawsze) odpowiednie do użycia procedur przechowywanych .
W rzeczywistości nie jestem już w stanie wyczyścić informacji o połączeniu, ponieważ procedura przechowywana iteruje przez wszystkie bazy danych i nie unika odpowiednio nazw baz danych. Ta iteracja jest złożona, że nie byłem w stanie załatać jej w ponad 8 SP.
Ponadto nie jestem w stanie używać MMC ani skryptów do edytowania konfliktów replikacji . Jeśli masz jedną (Jedną!) Bazę danych z kropką w nazwie, problemy te pojawią się na każdej bazie danych w każdej publikacji.
To są moje wystąpienia. Złożone akcje SQL są przetwarzane w języku SQL i będą działać poprawnie, jeśli baza będzie w porządku.
Jeśli spróbujesz połączyć bazę danych z arkuszem programu Excel za pomocą Microsoft Query (przez ODBC), otrzymasz kreatora konfiguracji, który pozwala wybrać bazę danych, z którą chcesz się połączyć. - aKzenT
Błędy te częściej można znaleźć w oprogramowaniu innych firm, więc nigdy nie używaj kropek w każdej nazwie czegokolwiek na serwerze SQL.
W nazwach dozwolonych jest wiele znaków, ale konwencja i zdrowy rozsądek ograniczają użycie znaków specjalnych. „_” (podkreślenie) to sprawdzony i najbezpieczniejszy separator zapewniający łatwość odczytu.
Ta sama oferta: nazwa klucza obcego nie powinna zawierać żadnej kropki.
Odkryłem, że jeśli musisz zmienić nazwę takiej nazwy, będziesz potrzebować nawiasów, aby sp_rename
zadziałać (ponieważ zmieniając nazwę klucza obcego, musisz określić schemat).
Przykład:
sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'
Jeśli zapomnisz nawiasów, pojawi się błąd: 15225
Jeden z naszych dostawców zdecydował się wprowadzić nazwę schematu: [System.Activities.DurableInstancing]. Zepsute zostało nasze narzędzie do ładowania danych, więc teraz mamy dalszy rozwój, aby poradzić sobie z ich dziwnością. Po prostu nie rób tego. Użyć '-'.
-
kiedy można użyć podkreślenia_
i nie trzeba w ogóle umieszczać nazwy w nawiasach kwadratowych?