it-swarm.com.de

Ist es in Ordnung, Punkte in SQL Server-Datenbanknamen einzufügen?

Wenn ich in SQL Server (2005 oder 2008) einen Datenbanknamen mit einem Punkt verwende, z. B. "MyApp.Sales", kann dies zu Problemen führen?

28
Sean Kearon

Sie können, aber ich würde nicht. Sie müssten den DB-Namen immer in eckige Klammern wie [MyApp.Sales] setzen.

Um es noch einmal zusammenzufassen: Wenn Sie Ihre geistige Gesundheit schätzen, tun Sie es nicht.

Ich denke es ist eine sehr schlechte Idee auch wenn technisch möglich.

Im Laufe der Jahre fand ich heraus, dass viele Menschen Schwierigkeiten haben, die vierteilige Namenskonvention zu verstehen, obwohl dies ziemlich offensichtlich erscheint:

server_name.database_name.schema_name.object_name

Stellen Sie sich vor, was passieren wird, wenn sie so etwas sehen:

MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts

oder:

[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]

Dinge zu halten einfach ist wichtig.

36

Falls jemand anderes auf diese Frage stößt ...

Beachten Sie, dass dies nicht nur eine schlechte Idee ist, da Benutzer verwirrt sein können, sondern auch, weil einige Tools verwirrt sein können.

Auch Microsoft selbst hat Probleme damit. Wenn Sie versuchen, Ihre Datenbank mithilfe von Microsoft Query (über ODBC) mit einer Excel-Tabelle zu verbinden, erhalten Sie einen Konfigurationsassistenten, mit dem Sie die Datenbank auswählen können, zu der Sie eine Verbindung herstellen möchten. Wenn Sie jedoch eine Datenbank auswählen, die einen Punkt enthält, wird ein Fehler angezeigt, der besagt, dass der Server nicht gefunden wurde. Es scheint, dass der Assistent nicht prüft, ob die Werte maskiert werden müssen, und die Bezeichner blind verkettet.

Es gibt natürlich Workarounds, aber Sie sparen sich Ärger, indem Sie dies nicht von Anfang an tun.

15
aKzenT

Verwenden Sie keinen Punkt in Datenbanknamen, Veröffentlichungsnamen und Benutzernamen. Ich empfehle dringend, niemals einen Punkt im Namen (Spalte, Tabelle, Ansicht, Datenbank usw.) zu verwenden.

Update: Ich kann bestätigen, dass das Minuszeichen "-" ähnliche Probleme verursacht.

Folgendes passiert:

SQL Server verwendet Skripte für den internen Gebrauch wie gespeicherte Systemprozeduren. Wie hier bereits erwähnt, zwingen Sie die von Ihnen verwendeten Befehle manchmal dazu, den Namen in Klammern zu setzen, und das ist (ernsthaft Microsoft?) nicht (immer) OK für die Verwendung gespeicherter Prozeduren .

Tatsächlich bin ich nicht mehr in der Lage, Abonnement-Informationen zu bereinigen, da die gespeicherte Prozedur alle Datenbanken durchläuft und den Datenbanknamen nicht ordnungsgemäß entgeht. Diese Iteration ist so komplex, dass ich sie in über 8 SPs nicht patchen konnte.

Außerdem kann ich nicht MMC oder Skripte zum Bearbeiten von Replikationskonflikten . Wenn Sie einen haben (Eins!) Bei einer Datenbank mit einem Punkt im Namen treten diese Probleme bei jeder Veröffentlichung bei jeder Datenbank auf.

Dies sind die Vorkommnisse, die ich habe. Komplexe SQL-Aktionen werden in SQL-Sprache verarbeitet und funktionieren einwandfrei, wenn die Basis in Ordnung ist.

Wenn Sie versuchen, Ihre Datenbank mithilfe von Microsoft Query (über ODBC) mit einer Excel-Tabelle zu verbinden, erhalten Sie einen Konfigurationsassistenten, mit dem Sie die Datenbank auswählen können, zu der Sie eine Verbindung herstellen möchten. - aKzenT

Diese Fehler treten möglicherweise häufiger in Software von Drittanbietern auf, sodass niemals Punkte in jedem Namen von irgendetwas auf einem SQL Server verwendet werden.

8
Daniel

In Namen sind viele Zeichen zulässig, aber Konvention und gesunder Menschenverstand schränken die Verwendung von Sonderzeichen ein. '_' (Unterstrich) ist das bewährte sicherste Trennzeichen und erleichtert die Lesbarkeit.

7
user48235

Gleiches Angebot: Der Name des Fremdschlüssels sollte keinen Punkt enthalten.

Ich habe festgestellt, dass Sie, wenn Sie einen solchen Namen umbenennen müssen, Klammern benötigen, um sp_rename work (da Sie beim Umbenennen eines Fremdschlüssels das Schema angeben müssen).

Beispiel:

sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'

Wenn Sie die Klammern vergessen, erhalten Sie eine Fehlermeldung: 15225

1
Ozzie