Initial catalog sql что это
После определения источника данных мы можем к нему подключаться. Для этого создадим проект простого консольного приложения.
Первым делом нам надо определить строку подключения, предоставляющая информацию о базе данных и сервере, к которым предстоит установить подключение:
Data Source : указывает на название сервера. По умолчанию это «.\SQLEXPRESS». Поскольку в строке используется слеш, то в начале строки ставится символ @. Если имя сервера базы данных отличается, то соответственно его и надо использовать.
Initial Catalog : указывает на название базы данных на сервере
Integrated Security : устанавливает проверку подлинности
В нашем случае, так как мы создали проект консольного приложения, то у нас в проекте должен быть файл App.config, который на данный момент имеет следующее определение:
Изменим его, добавив определение строки подключения:
Атрибут connectionString собственно хранит строку подключения, то есть весь тот текст, который мы выше определяли в методе Main. И третий атрибут providerName задает пространство имен провайдера данных. Так как мы будем подключаться к базе данных MS SQL Server, то соответственно мы будем использовать провайдер для SQL Server, функциональность которого заключена в пространстве имен System.Data.SqlClient.
Теперь получим эту строку подключения в приложении:
С помощью объекта ConfigurationManager.ConnectionStrings[«название_строки_подключения»] мы можем получить строку подключения и использовать ее в приложении.
Параметры строки подключения
Application Name : название приложения. Может принимать в качестве значения любую строку. Значение по умолчанию: «.Net SqlClient Data Provide»
AttachDBFileName : хранит полный путь к прикрепляемой базе данных
Connect Timeout : временной период в секундах, через который ожидается установка подключения. Принимает одно из значений из интервала 0–32767. По умолчанию равно 15.
В качестве альтернативного названия параметра может использоваться Connection Timeout
Data Source : название экземпляра SQL Servera, с которым будет идти взаимодействие. Это может быть название локального сервера, например, «EUGENEPC/SQLEXPRESS», либо сетевой адрес.
Initial Catalog : хранит имя базы данных
В качестве альтернативного названия параметра можно использовать Database
В качестве альтернативного названия параметра может использоваться Trusted_Connection
Packet Size : размер сетевого пакета в байтах. Может принимать значение, которое кратно 512. По умолчанию равно 8192
Password : пароль пользователя
User ID : логин пользователя
Например,если для подключения необходим логин и пароль, то мы можем их передать в строку подключения через параметры user id и password :
Строка подключения для MS SQL Server
Для работы с MS SQL Server естественно нам потребуется MS SQL Server. Можно выбрать как полноценный MS SQL Server (в весиях Enterprise, Developer), так и MS SQL Server Express.
Про установку MS SQL Server в выпусках Developer или Express можно почитать в статье Установка MS SQL Server 2019
Также можно использовать специально предназначенный для целей разработки и тестирования легковесный движок MS SQL Server Express LocalDB, про установку которого можно почитать в статье Установка SQL Server Express LocalDB.
Прежде всего, определение строки подключения зависит от типа подключения: либо мы подлючаемся по логину и паролю, либо мы используем доверенное подключение (trusted connection), где не требуются логин и пароль (например, при подключении к локальному серверу SQL Server).
Если подключение производится по логину и паролю, то общий вид строки подключения выглядит следующим образом:
В данном случае строка подключения состоит из четырех параметров:
Server : указывает на название сервера
Database : указывает на название базы данных на сервере
Если мы используем так называемое доверенное подключение (trusted connection) и применяем аутентификацию Windwows, например, при подключении к локальному серверу, который запущен на том же компьютере, то строка подключения в общем виде выглядит следующим образом:
Список основных параметров строки подключения, которые могут использоваться:
Application Name : название приложения. Может принимать в качестве значения любую строку. Значение по умолчанию: «.Net SqlClient Data Provide»
AttachDBFileName : хранит полный путь к прикрепляемой базе данных
Connect Timeout : временной период в секундах, через который ожидается установка подключения. Принимает одно из значений из интервала 0–32767. По умолчанию равно 15.
В качестве альтернативного названия параметра может использоваться Connection Timeout
Server : название экземпляра SQL Servera, с которым будет идти взаимодействие. Это может быть название локального сервера, например, «./SQLEXPRESS», «localhost», либо сетевой адрес.
Database : хранит имя базы данных
В качестве альтернативного названия параметра можно использовать Initial Catalog
В качестве альтернативного названия параметра может использоваться Integrated Security
Packet Size : размер сетевого пакета в байтах. Может принимать значение, которое кратно 512. По умолчанию равно 8192
Password : пароль пользователя
User ID : логин пользователя
В данном случае мы будем использовать к локальному серверу. Если мы подключаемся к полноценному серверу MS SQL Server (например, версия Developer Edition), то в качестве адреса сервера, как правило, выступает localhost :
Для подключения к localdb применяется адрес (localdb)\mssqllocaldb :
What is the point of «Initial Catalog» in a SQL Server connection string?
Every SQL Server connection string I ever see looks something like this:
Do I need the Initial Catalog setting? (Apparently not, since the app I’m working on appears to work without it.)
Well, then, what’s it for?
3 Answers 3
If the user name that is in the connection string has access to more then one database you have to specify the database you want the connection string to connect to. If your user has only one database available then you are correct that it doesn’t matter. But it is good practice to put this in your connection string.
This is the initial database of the data source when you connect.
Edited for clarity:
If you have multiple databases in your SQL Server instance and you don’t want to use the default database, you need some way to specify which one you are going to use.
Setting an Initial Catalog allows you to set the database that queries run on that connection will use by default. If you do not set this for a connection to a server in which multiple databases are present, in many cases you will be required to have a USE statement in every query in order to explicitly declare which database you are trying to run the query on. The Initial Catalog setting is a good way of explicitly declaring a default database.
Not the answer you’re looking for? Browse other questions tagged sql-server database sql-server-2005 connection-string database-connection or ask your own question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.12.10.40971
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Создание строки подключения и работа с SQL Server LocalDB
Обновленная версия этого учебника доступна здесь с помощью последней версии Visual Studio. В новом руководстве используется ASP.NET Core MVC, который предоставляет множество улучшений по сравнению с этим руководством.
В этом руководстве описывается модель MVC ASP.NET Core с контроллерами и представлениями. Razor Pages — это новая альтернатива в ASP.NET Core, модель программирования на основе страниц, которая упрощает создание пользовательского веб-интерфейса и повышает его производительность. Рекомендуется испытать Razor Pages руководстве до версии MVC. Руководство по Razor Pages:
Создание строки подключения и работа с SQL Server LocalDB
MovieDBContext Созданный класс обрабатывает задачу подключения к базе данных и сопоставления Movie объектов с записями базы данных. Одним из вопросов, которые вы можете спросить, является указание того, к какой базе данных будет подключаться. На самом деле нет необходимости указывать, какую базу данных использовать, Entity Framework по умолчанию будет использовать LocalDB. В этом разделе мы явно добавим строку подключения в файл Web.config приложения.
SQL Server Express LocalDB
SQL Server Express не рекомендуется использовать в рабочих веб-приложениях. LocalDB в частности не следует использовать для рабочей среды с веб-приложением, поскольку оно не предназначено для работы с IIS. Однако базу данных LocalDB можно легко перенести в SQL Server или SQL Azure.
В Visual Studio 2017 LocalDB устанавливается по умолчанию в Visual Studio.
По умолчанию Entity Framework ищет строку подключения с именем, аналогичную классу контекста объекта ( MovieDBContext для этого проекта). Дополнительные сведения см. в разделе SQL Server строки подключения для веб-приложений ASP.NET.
В следующем примере показана часть файла Web.config с добавленной новой строкой подключения:
Далее предстоит создать новый MoviesController класс, который можно использовать для отображения данных фильмов и предоставления пользователям возможности создавать новые списки фильмов.
Подключение к базе данных
В следующем коде иллюстрируется создание, открытие и закрытие соединения с базой данных SqlServer:
Из приведенного выше кода можно понять, что имя Initial Catalog относится к базе данных, с которой нужно установить сеанс. Имя Data Source определяет имя машины, на которой расположена база данных. Элемент (local) позволяет указать текущую локальную машину (независимо от конкретного имени этой машины), а элемент \SQLEXPRESS сообщает поставщику SQL Server, что вы подключаетесь к стандартной инсталляции SQL Server Express (если вы создали AutoLot с помощью полной версии SQL Server 2005 или более ранней, укажите Data Source=(local)). В данном примере я использовал вместо (local) полное название имени компьютера (MICROSOF-1EA29E), на котором развернута версия SQL Server.
Кроме того, можно указать любое количество элементов, которые задают полномочия безопасности. В нашем примере имени Integrated Security присвоено значение SSPI (что эквивалентно true), которое использует для аутентификации пользователя текущие полномочия учетной записи Windows.
Назначение каждой пары имя/значение для вашей СУБД можно узнать в документации по NET Framework 4.0 SDK, в описании свойства ConnectionString объекта подключения для вашего поставщика данных.
При наличии строки подключения вызов Open() устанавливает соединение с СУБД. В дополнение к членам ConnectionString, Open() и Close() объект подключения содержит ряд членов, которые позволяют настроить дополнительные параметры подключения, например, время тайм-аута и информацию, относящуюся к транзакциям.
Ниже приведены некоторые члены базового класса DbConnection:
BeginTransaction()
Используется для начала транзакции базы данных
ChangeDatabase()
Изменяет базу данных для открытого подключения
ConnectionTimeout
Свойство только для чтения. Возвращает время ожидания при установке подключения, после которого ожидание прекращается и выдается сообщение об ошибке (по умолчанию 15 секунд). Для изменения этого времени нужно изменить в строке подключения сегмент Connect Timeout (например, Connect Timeout=30)
Database
Свойство только для чтения. Содержит имя базы данных, с которой связан объект подключения
DataSource
Свойство только для чтения. Содержит местоположение базы данных, с которой связан объект подключения
GetSchema()
Этот метод возвращает объект DataTable, содержащий информацию схемы из источника данных
State
Свойство только для чтения. Содержит текущее состояние подключения в виде одного из значений перечисления ConnectionState
Свойства типа DbConnection предназначены в основном только для чтения и поэтому нужны, если требуется получить характеристики подключения во время выполнения. Если понадобится изменить стандартные значения, необходимо будет изменить саму строку подключения. Например, можно изменить время тайм-аута с 15 на 30 секунд:
Программная работа со строками подключения может оказаться несколько затруднительной, поскольку они часто представлены в виде строковых литералов, которые трудно обрабатывать и контролировать на наличие ошибок. Поставщики данных ADO.NET, разработанные Microsoft, поддерживают объекты построителей строк подключения (connection string builder object) (аналог StringBuilder), которые позволяют устанавливать пары имя/значение с помощью строго типизированных свойств. Рассмотрим следующую модификацию нашего метода Main():
В этом варианте создается экземпляр SqlConnectionStringBuilder, устанавливаются его свойства, и выбирается внутренняя строка из свойства ConnectionString. Здесь использован стандартный конструктор типа. При этом можно также создать экземпляр объекта построителя для строки подключения поставщика данных, передав в качестве отправной точки существующую строку подключения (это может оказаться удобным при динамическом чтении значений из файла App.config).
Эффективное использование соединений
Это также касается и написания кода, обращающегося к базе данных, потому что сохранение подключений открытыми дольше, чем нужно, может повлиять на другие сеансы.
В крайних случаях незакрытое соединение может полностью блокировать доступ других пользователей к целым множествам таблиц, нанося огромный ущерб производительности приложения. Закрытие соединений базы данных должно считаться обязательным, поэтому в настоящем разделе мы продемонстрируем структуру кода, которая минимизирует риск оставления ресурсов в открытом состоянии.
Вариант обеспечения очистки ресурсов состоит в применении блоков try. catch. finally, и он гарантирует закрытие любых открытых соединений внутри блока finally. Рассмотрим краткий пример:







