Что означает «Начальный каталог» в строке подключения к SQL Server?

91

Каждая строка подключения к SQL Server, которую я когда-либо видел, выглядит примерно так:

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

Нужна ли мне настройка исходного каталога? (По-видимому, нет, поскольку приложение, над которым я работаю, работает без него.)

Ну тогда для чего это?

Райан Ланди
источник
31
Хммм, я только что обнаружил, что мое приложение помещает все созданные мной таблицы в master. Ой. Возможно, я только что узнал ответ на свой вопрос.
Райан Ланди,

Ответы:

53

Если имя пользователя, указанное в строке подключения, имеет доступ к нескольким базам данных, вам необходимо указать базу данных, к которой должна подключаться строка подключения. Если вашему пользователю доступна только одна база данных, вы правы, что это не имеет значения. Но рекомендуется указать это в строке подключения.

Авитус
источник
10
Не совсем так. Логин может не иметь разрешений в базе данных по умолчанию. Итак, вам необходимо изменить контекст базы данных при подключении
gbn,
Это требуется для Entity Framework, если вы указываете с помощью параметра -ConnectionStringName, так что определенно хорошая практика, но также иногда требуется!
Джеймс Джи
Не могли бы вы перефразировать этот ответ? Я все еще не понимаю, прочитав дважды.
thatWiseGuy
33

Это исходная база данных источника данных при подключении.

Отредактировано для ясности :

Если у вас есть несколько баз данных в вашем экземпляре SQL Server и вы не хотите использовать базу данных по умолчанию, вам нужен способ указать, какую из них вы собираетесь использовать.

Энди Уэст
источник
1
Первая часть верна. Вторая часть неверна. При создании учетной записи ей назначается база данных по умолчанию, которая будет использоваться, если исходный каталог не указан. Обычно по умолчанию используется master (по неизвестной причине).
GrayWizardx,
Когда я говорю «по умолчанию», я просто имею в виду, когда вы не квалифицируете базу данных в своих именах объектов. Во всяком случае, я свой ответ пояснил.
Энди Уэст,
Мне нравится разъяснение Энди, на самом деле его комментарий полезен; делает это не означает , что если я делать квалифицироваться каждую базу данных в своих именах объектов, то Initial Catalog не так важно / не имеет значения?
Красный горошек,
12

Установка начального каталога позволяет вам установить базу данных, которую запросы, выполняемые в этом соединении, будут использовать по умолчанию. Если вы не установите это для подключения к серверу, на котором присутствует несколько баз данных, во многих случаях вам потребуется иметь оператор USE в каждом запросе, чтобы явно указать, для какой базы данных вы пытаетесь запустить запрос. Параметр «Начальный каталог» - хороший способ явно объявить базу данных по умолчанию.

jliles
источник