Jaki jest cel „Katalogu początkowego” w ciągu połączenia programu SQL Server?

91

Każdy ciąg połączenia SQL Server, jaki kiedykolwiek widziałem, wygląda mniej więcej tak:

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

Czy potrzebuję ustawienia katalogu początkowego? (Najwyraźniej nie, ponieważ aplikacja, nad którą pracuję, wydaje się działać bez niej).

Więc do czego to służy?

Ryan Lundy
źródło
31
Hmmm, właśnie odkryłem, że moja aplikacja umieszcza wszystkie stworzone przeze mnie tabele w master. Ups. Być może właśnie dowiedziałem się odpowiedzi na moje pytanie.
Ryan Lundy

Odpowiedzi:

53

Jeśli nazwa użytkownika znajdująca się w parametrach połączenia ma dostęp do więcej niż jednej bazy danych, należy określić bazę danych, z którą mają się łączyć parametry połączenia. Jeśli twój użytkownik ma dostępną tylko jedną bazę danych, masz rację, że to nie ma znaczenia. Ale dobrą praktyką jest umieszczenie tego w parametrach połączenia.

Avitus
źródło
10
Nie do końca prawda. Nazwa logowania może nie mieć uprawnień do domyślnej bazy danych. Musisz więc zmienić kontekst bazy danych przy połączeniu
gbn
Jest to wymagane w przypadku Entity Framework, jeśli określisz przy użyciu parametru -ConnectionStringName, więc zdecydowanie dobra praktyka, ale czasami wymagana!
James G
Czy możesz przeformułować tę odpowiedź? Nadal nie rozumiem po dwukrotnym przeczytaniu.
thatWiseGuy
33

To jest początkowa baza danych źródła danych podczas łączenia.

Zredagowano dla jasności :

Jeśli masz wiele baz danych w swojej instancji SQL Server i nie chcesz używać domyślnej bazy danych, potrzebujesz sposobu, aby określić, której z nich będziesz używać.

Andy West
źródło
1
Pierwsza część jest poprawna. Druga część jest nieprawidłowa. Podczas tworzenia konta przypisywana jest domyślna baza danych, która będzie używana, jeśli katalog początkowy nie zostanie określony. Zwykle jest to domyślne ustawienie główne (z nieznanego powodu).
GrayWizardx
Kiedy mówię „domyślnie”, mam na myśli po prostu, kiedy nie kwalifikujesz bazy danych w nazwach obiektów. W każdym razie wyjaśniłem swoją odpowiedź.
Andy West
Podoba mi się wyjaśnienie Andy'ego, w rzeczywistości jego komentarz jest pomocny; Nie ma to oznaczać, że jeśli będę robić zakwalifikować każdą bazę danych w moich nazw obiektów, a następnie Initial Catalog nie jest tak ważna / nieistotna?
The Red Pea
12

Ustawienie katalogu początkowego umożliwia ustawienie bazy danych, która będzie domyślnie używana przez zapytania uruchamiane w tym połączeniu. Jeśli nie ustawisz tego dla połączenia z serwerem, na którym obecnych jest wiele baz danych, w wielu przypadkach będziesz musiał mieć instrukcję USE w każdym zapytaniu, aby jawnie zadeklarować, na której bazie danych próbujesz uruchomić zapytanie. Ustawienie katalogu początkowego jest dobrym sposobem jawnego zadeklarowania domyślnej bazy danych.

jliles
źródło