Wenn ich in SQL Server (2005 oder 2008) einen Datenbanknamen mit einem Punkt darin verwende, etwa "MyApp.Sales", werden dadurch Probleme verursacht?
Wenn ich in SQL Server (2005 oder 2008) einen Datenbanknamen mit einem Punkt darin verwende, etwa "MyApp.Sales", werden dadurch Probleme verursacht?
Antworten:
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 dies technisch möglich ist.
Im Laufe der Jahre stellte sich heraus, dass viele Menschen Probleme haben, die vierteilige Namenskonvention zu verstehen, obwohl dies ziemlich offensichtlich erscheint:
server_name.database_name.schema_name.object_name
Stellen Sie sich vor, was passiert, wenn sie so etwas sehen:
MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts
oder:
[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]
Es ist wichtig, die Dinge einfach zu halten .
Falls jemand anderes auf diese Frage stößt ...
Denken Sie daran, dass dies nicht nur eine schlechte Idee ist, weil Benutzer verwirrt sein könnten, sondern auch, weil einige Tools verwirrt sein könnten.
Auch Microsoft selbst hat damit Probleme. Wenn Sie versuchen, Ihre Datenbank mithilfe von Microsoft Query (über ODBC) mit einem Excel-Arbeitsblatt zu verbinden, erhalten Sie einen Konfigurationsassistenten, mit dem Sie die Datenbank auswählen können, zu der Sie eine Verbindung herstellen möchten. Die Auswahl einer Datenbank mit einem Punkt führt jedoch zu einem Fehler, der besagt, dass der Server nicht gefunden wurde. Es scheint, dass der Assistent nicht überprüft, ob die Werte maskiert werden müssen, und die Bezeichner blind verkettet.
Es gibt natürlich Workarrounds, aber Sie sparen sich Ärger, wenn Sie dies nicht von Anfang an tun.
Verwenden Sie Punkt nicht in Datenbanknamen, Veröffentlichungsnamen und Benutzernamen. Und ich empfehle nachdrücklich, 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 Skripts für die interne Verwendung wie gespeicherte Systemprozeduren. Wie bereits erwähnt, zwingen Sie die Befehle, die Sie verwenden, manchmal dazu, den Namen in Klammern zu setzen, und das ist (im Ernst, Microsoft?) Nicht (immer) in Ordnung für die Verwendung von gespeicherten Prozeduren .
Tatsächlich kann ich Abonnementinformationen nicht mehr 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 keine MMC oder Skripts zum Bearbeiten von Replikationskonflikten verwenden . Wenn Sie eine (One!) - Datenbank haben, deren Name einen Punkt enthält, treten diese Probleme bei jeder Veröffentlichung auf.
Das sind die Vorkommnisse, die ich habe. Komplexe SQL-Aktionen werden in SQL verarbeitet und funktionieren einwandfrei, wenn die Basis in Ordnung ist.
Wenn Sie versuchen, Ihre Datenbank mithilfe von Microsoft Query (über ODBC) mit einem Excel-Arbeitsblatt 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 können häufiger in Software von Drittanbietern auftreten. Verwenden Sie daher niemals Punkte in allen Namen von Objekten auf einem SQL Server.
Gleicher Deal: Der Name des Fremdschlüssels sollte keinen Punkt enthalten.
Ich habe festgestellt, dass Sie zum Umbenennen eines solchen Namens Klammern benötigen sp_rename
(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
Einer unserer Lieferanten hat sich entschieden, den Schemanamen einzuführen: [System.Activities.DurableInstancing]. Unser Dataload-Tool ist kaputt, daher haben wir jetzt weitere Entwicklungsschritte, um mit ihrer Verrücktheit fertig zu werden. Tu es einfach nicht. Benutze einen '-'.
-
wenn Sie einen Unterstrich verwenden können_
und den Namen überhaupt nicht in eckige Klammern setzen müssen?