Обычные и контекстные соединения
При соединении с удаленным сервером всегда пользуйтесь обычными, а не контекстными соединениями. Если нужно подключиться к тому же серверу, на котором выполняется хранимая процедура или функция, в большинстве случаев используется контекстное соединение. Преимущества заключаются в выполнении приложений в одном пространстве транзакций и отсутствии необходимости повторной проверки подлинности имени входа.
Кроме того, использование контекстного соединения обычно приводит к повышению производительности и меньшем потреблении ресурсов. Контекстное соединение является только внутрипроцессным соединением, поэтому оно может связываться с сервером «напрямую», обходя сетевой протокол и транспортный уровень при отправке инструкций Transact-SQL и получении результатов. Также обходится процесс проверки подлинности. На следующем рисунке показаны основные компоненты управляемого поставщика SqlClient, а также взаимодействие разных компонентов друг с другом при использовании обычного и контекстного соединения.
Контекстное соединение требует более короткого кода и меньшего числа компонентов, поэтому запрос к серверу, как и получение результатов происходит быстрее, чем при обычном соединении. Время выполнение запроса на сервере остается одинаковым для контекстных и обычных соединений.
В некоторых случаях, возможно, потребуется открыть отдельное обычное соединение с тем же сервером. Например, существуют некоторые ограничения на использование контекстное соединений, описанные в разделе Ограничения обычных и контекстных соединений.