Контекстное соединение (ADO.NET)
Проблема внутреннего доступа к данным встречается довольно часто. Речь идет о тех ситуациях, когда необходимо получить доступ к тому же серверу, на котором выполняется конкретная хранимая процедура или функция среды CLR. Один из вариантов состоит в том, чтобы создать соединение с использованием SqlConnection, задать строку соединения, в которой указан локальный сервер, и открыть соединение. В этом случае необходимо указать учетные данные для входа. К тому же соединение устанавливается в другом сеансе базы данных (по сравнению с хранимой процедурой или функцией), может иметь другие параметры SET, находиться в отдельной транзакции, не позволять обнаруживать используемые временные таблицы и т. д. Если управляемая хранимая процедура или функция выполняется в процессе SQL Server, причина этого состоит в том, что какой-то пользователь подключился к этому серверу и выполнил инструкцию SQL для вызова соответствующего кода. В этой ситуации можно обеспечить выполнение хранимой процедуры или функции в контексте данного соединения вместе с осуществляемой в нем транзакцией, параметрами SET и т. д. В этом состоит так называемое контекстное соединение.
Контекстное соединение позволяет выполнять инструкции Transact-SQL в том же контексте, в каком первоначально был вызван конкретный код. Более подробные сведения см. в электронной документации по SQL Server для используемой версии SQL Server.
SQL Server 2005 |
SQL Server 2008 |
---|---|