Was ist der Sinn von "Erstkatalog" in einer SQL Server-Verbindungszeichenfolge?

89

Jede SQL Server-Verbindungszeichenfolge, die ich jemals sehe, sieht ungefähr so ​​aus:

Data Source=MyLocalSqlServerInstance;Initial Catalog=My Nifty Database;
    Integrated Security=SSPI;

Benötige ich die Einstellung Erstkatalog? (Anscheinend nicht, da die App, an der ich arbeite, ohne sie zu funktionieren scheint.)

Nun, wofür ist es dann?

Ryan Lundy
quelle
31
Hmmm, ich habe gerade festgestellt, dass meine App alle meine erstellten Tabellen in Master abgelegt hat. Hoppla. Ich habe vielleicht gerade die Antwort auf meine Frage gelernt.
Ryan Lundy

Antworten:

51

Wenn der Benutzername in der Verbindungszeichenfolge Zugriff auf mehr als eine Datenbank hat, müssen Sie die Datenbank angeben, zu der die Verbindungszeichenfolge eine Verbindung herstellen soll. Wenn Ihrem Benutzer nur eine Datenbank zur Verfügung steht, haben Sie Recht, dass dies keine Rolle spielt. Es wird jedoch empfohlen, dies in Ihre Verbindungszeichenfolge einzufügen.

Avitus
quelle
9
Nicht ganz richtig. Die Anmeldung verfügt möglicherweise nicht über Berechtigungen für die Standarddatenbank. Sie müssen also den Datenbankkontext bei Verbindung
ändern
Dies ist für das Entity Framework erforderlich, wenn Sie mit dem Parameter -ConnectionStringName angeben, also auf jeden Fall eine gute Praxis, aber auch manchmal erforderlich!
James G
Können Sie diese Antwort bitte umformulieren? Ich verstehe es immer noch nicht, nachdem ich es zweimal durchgelesen habe.
thatWiseGuy
33

Dies ist die ursprüngliche Datenbank der Datenquelle, wenn Sie eine Verbindung herstellen.

Aus Gründen der Übersichtlichkeit bearbeitet :

Wenn Ihre SQL Server-Instanz mehrere Datenbanken enthält und Sie die Standarddatenbank nicht verwenden möchten, müssen Sie auf irgendeine Weise angeben, welche Sie verwenden möchten.

Andy West
quelle
1
Der erste Teil ist richtig. Der zweite Teil ist nicht korrekt. Wenn Sie das Konto erstellen, wird ihm eine Standarddatenbank zugewiesen, die verwendet wird, wenn der ursprüngliche Katalog nicht angegeben ist. Dies ist im Allgemeinen standardmäßig Master (aus einem unbekannten Grund).
GrayWizardx
Wenn ich "standardmäßig" sage, meine ich einfach, wenn Sie die Datenbank in Ihren Objektnamen nicht qualifizieren. Auf jeden Fall habe ich meine Antwort klargestellt.
Andy West
12

Durch Festlegen eines Erstkatalogs können Sie die Datenbank festlegen, die standardmäßig für Abfragen verwendet wird, die für diese Verbindung ausgeführt werden. Wenn Sie dies nicht für eine Verbindung zu einem Server festlegen, auf dem mehrere Datenbanken vorhanden sind, müssen Sie in vielen Fällen in jeder Abfrage eine USE-Anweisung haben, um explizit anzugeben, auf welcher Datenbank Sie die Abfrage ausführen möchten. Die Einstellung für den anfänglichen Katalog ist eine gute Möglichkeit, eine Standarddatenbank explizit zu deklarieren.

jliles
quelle