Freigeben über


Kontextverbindung

Der interne Datenzugriff stellt häufig ein Problem dar. Es tritt auf, wenn Sie auf denselben Server zugreifen möchten, auf dem auch die CLR-gespeicherte Prozedur (Common Language Runtime, CLR) oder -Funktion ausgeführt wird. Eine der Optionen besteht darin, mithilfe von System.Data.SqlClient.SqlConnection eine Verbindung zu erstellen, eine Verbindungszeichenfolge anzugeben, die auf den lokalen Server zeigt, und die Verbindung anschließend zu öffnen. Dazu ist bei der Anmeldung die Angabe von Anmeldeinformationen erforderlich. Die Verbindung stellt eine andere Datenbanksitzung dar als diejenige der gespeicherten Prozedur oder Funktion, d. h. sie kann andere SET-Optionen verwenden und befindet sich in einer separaten Transaktion. Auch Ihre temporären Tabellen sind für diese Sitzung nicht sichtbar. Wenn der Code Ihrer verwalteten gespeicherten Prozedur oder Funktion im SQL Serverprozess ausgeführt wird, liegt das daran, dass jemand eine Verbindung mit diesem Server hergestellt und eine SQL-Anweisung ausgeführt hat, um den Code aufzurufen. Nun möchten Sie eventuell die gespeicherte Prozedur oder Funktion im Kontext dieser Verbindung ausführen, zusammen mit deren Transaktion, SET-Optionen und so weiter. Dies wird als Kontextverbindung bezeichnet.

Die Kontextverbindung ermöglicht, Transact-SQL-Anweisungen im selben Kontext auszuführen wie den Code, der anfänglich aufgerufen wurde. Um die Kontextverbindung herzustellen, müssen Sie wie im folgenden Beispiel gezeigt das Verbindungszeichenfolgenschlüsselwort context connection verwenden:

[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

In diesem Abschnitt