Поделиться через


Контекстное соединение

Область применения: SQL Server

Проблема внутреннего доступа к данным встречается довольно часто. Речь идет о тех ситуациях, когда необходимо получить доступ к тому же серверу, на котором выполняется конкретная хранимая процедура или функция среды CLR. Один из вариантов — создать подключение с помощью System.Data.SqlClient.SqlConnection, указать строка подключения, указывающий на локальный сервер, и открыть подключение. В этом случае требуется указать учетные данные для входа в систему. Подключение находится в другом сеансе базы данных, отличном от хранимой процедуры или функции, у него могут быть разные параметры SET , она находится в отдельной транзакции, она не отображает временные таблицы и т. д. Если управляемая хранимая процедура или функция выполняется в процессе SQL Server, причина этого состоит в том, что кто-то соединился с этим сервером и выполнил инструкцию SQL для вызова соответствующего процедуры или функции. Возможно, требуется, чтобы хранимая процедура или функция выполнялись в контексте этого соединения, а также ее транзакция, параметры SET и т. д. В этом состоит так называемое контекстное соединение.

Контекстное соединение позволяет выполнять инструкции Transact-SQL в том же контексте, в каком первоначально был вызван конкретный код. Для получения контекстного соединения необходимо использовать ключевое слово «context connection» строки соединения, как в примере ниже:

[C#]

using(SqlConnection connection = new SqlConnection("context connection=true"))   
{  
    connection.Open();  
    // Use the connection  
}  

[Visual Basic]

Using connection as new SqlConnection("context connection=true")  
    connection.Open()  
    ' Use the connection  
End Using  
  

В этом разделе

Обычные подключения к контексту
Описывает разницу между регулярными и контекстными соединениями.

Ограничения обычных и контекстных подключений
Описывает ограничения регулярных и контекстных соединений.