У чому сенс “Початкового каталогу” у рядку підключення SQL Server?


91

Кожен рядок підключення SQL Server, який я коли-небудь бачив, виглядає приблизно так:

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

Чи потрібен параметр Початковий каталог? (Мабуть, ні, оскільки додаток, над яким я працюю, здається, працює без нього.)

Ну, тоді для чого це?


31
Хм-м-м, я щойно виявив, що мій додаток розміщує всі мої створені таблиці в master. На жаль Можливо, я щойно дізнався відповідь на своє запитання.
Райан Ланді

Відповіді:


53

Якщо ім'я користувача, яке є в рядку підключення, має доступ до більш ніж однієї бази даних, вам слід вказати базу даних, до якої потрібно підключити рядок підключення. Якщо у вашого користувача доступна лише одна база даних, то ви праві, що це не має значення. Але гарною практикою є розміщення цього у своєму рядку підключення.


10
Не зовсім правда. Логін може не мати дозволів на базу даних за замовчуванням. Отже, вам потрібно змінити контекст бази даних при підключенні
gbn

Це потрібно для Entity Framework, якщо ви вказуєте за допомогою параметра -ConnectionStringName, тому, безумовно, хороша практика, але іноді потрібна!
James G

Чи можете ви, будь ласка, переформулювати цю відповідь? Я все ще не розумію, прочитавши двічі.
thatWiseGuy

33

Це початкова база даних джерела даних при підключенні.

Відредаговано для ясності :

Якщо у вашому екземплярі SQL Server є кілька баз даних, і ви не хочете використовувати базу даних за замовчуванням, вам потрібен певний спосіб вказати, яку саме ви збираєтесь використовувати.


1
Перша частина правильна. Друга частина неправильна. При створенні облікового запису йому призначається база даних за замовчуванням, яка буде використовуватися, якщо початковий каталог не вказаний. Як правило, це значення за замовчуванням є основним (з невідомої причини).
GrayWizardx

Коли я кажу "за замовчуванням", я просто маю на увазі, коли ви не відповідаєте базі даних у іменах об'єктів. У будь-якому випадку я пояснив свою відповідь.
Andy West

Мені подобається пояснення Енді, насправді його коментар корисний; робить це не означає , що якщо я робити кваліфікуватися кожну базу даних в своїх іменах об'єктів, то Initial Catalog не так важливо / не має значення?
Червоний горошок

12

Встановлення початкового каталогу дозволяє встановити базу даних, яку за замовчуванням використовуватимуть запити, що виконуються за цим підключенням. Якщо ви не встановите це для підключення до сервера, на якому є кілька баз даних, у багатьох випадках вам потрібно буде мати оператор USE у кожному запиті, щоб явно заявити, з якої бази даних ви намагаєтесь виконати запит. Параметр Початковий каталог - це хороший спосіб явного оголошення бази даних за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.