Verbindungen in ADOMD.NET – Arbeiten mit Verbindungen und Sitzungen
In XML for Analysis (XMLA) unterstützen Sitzungen zustandsbehaftete Vorgänge während des Zugriffs auf analytische Daten. Sitzungen sind der Rahmen für den Bereich und den Kontext von Befehlen und Transaktionen für eine analytische Datenquelle. Die XMLA-Elemente, die verwendet werden, um Sitzungen zu verwalten, sind BeginSession, Session und EndSession.
ADOMD.NET verwendet diese drei XMLA-Sitzungselemente beim Start einer Sitzung, beim Durchführen einer Abfrage oder Abfragen von Daten während einer Sitzung und beim Beenden einer Sitzung.
Starten einer Sitzung
Die SessionID -Eigenschaft des - AdomdConnection Objekts enthält den Bezeichner der aktiven Sitzung, die dem -Objekt zugeordnet AdomdConnection ist. Durch die ordnungsgemäße Verwendung dieser Eigenschaft können Sie sowohl die Client- als auch die Server-Statusbehaftung in Ihrer Anwendung kontrollieren:
Wenn die SessionID -Eigenschaft beim Aufrufen der -Methode nicht auf eine gültige Sitzungs-ID Open festgelegt ist, AdomdConnection fordert das -Objekt eine neue Sitzungs-ID vom Anbieter an. ADOMD.NET initiiert eine Sitzung, indem es einen XMLA- BeginSession -Header an den Anbieter sendet. Wenn ADOMD.NET erfolgreich eine Sitzung startet, SessionID legt ADOMD.NET den Wert der -Eigenschaft auf die Sitzungs-ID der neu erstellten Sitzung fest.
Wenn die SessionID -Eigenschaft beim Aufrufen der -Methode auf eine gültige Sitzungs-ID Open festgelegt wird, AdomdConnection versucht das Objekt, eine Verbindung mit der angegebenen Sitzung herzustellen.
Wenn das AdomdConnection Objekt keine Verbindung mit der angegebenen Sitzung herstellen kann oder der Anbieter keine Sitzungen unterstützt, wird eine Ausnahme ausgelöst.
Hinweis
Nachdem Sie eine Sitzung ADOMD.NET haben, AdomdConnection können Sie mehrere Objekte mit dieser einzelnen aktiven Sitzung verbinden, AdomdConnection oder Sie können ein einzelnes Objekt von dieser Sitzung trennen und dieses Objekt erneut mit einer anderen Sitzung verbinden.
Arbeiten in einer Sitzung
Nachdem ADOMD.NET AdomdConnection das -Objekt mit einer gültigen Sitzung verknüpft hat, sendet ADOMD.NET einen XMLA-Sitzungsheader an den Anbieter mit jeder Anforderung von Daten oder Metadaten, die von einer Anwendung vorgenommen werden. Für jede Anforderung wird die Sitzungs-ID auf den Wert der -Eigenschaft SessionID festgelegt.
Eine Sitzungs-ID garantiert nicht, dass eine Sitzung gültig bleibt. Wenn eine Sitzung abläuft (beispielsweise bei einem Timeout der Sitzung oder wenn die Verbindung unterbrochen wird), kann der Anbieter die Aktionen der Sitzung beenden und rückgängig machen. In diesem Fall wird bei allen nachfolgenden Methodenaufrufen AdomdConnection des -Objekts eine Ausnahme ausgelöst. Da Ausnahmen nur ausgelöst werden, wenn die nächste Anforderung zum Anbieter gesendet wird, und nicht, wenn die Sitzung abläuft, muss Ihre Anwendung in der Lage sein, diese Ausnahmen immer dann behandeln zu können, wenn Ihre Anwendung Daten oder Metadaten vom Anbieter empfängt.
Beenden einer Sitzung
Close Wenn die -Methode aufgerufen wird, ohne den Wert des endSession-Parameters anzugeben, oder wenn der endSession-Parameter auf True festgelegt ist, AdomdConnection werden sowohl die Verbindung mit der Sitzung als auch die dem Objekt zugeordnete Sitzung geschlossen. Zum Schließen einer Sitzung sendet ADOMD.NET einen XMLA EndSession-Header an den Anbieter, bei dem die Sitzungs-ID auf den Wert der -Eigenschaft festgelegt SessionID ist.
Wenn die Close -Methode aufgerufen wird und der endSession-Parameter auf False festgelegt ist, AdomdConnection bleibt die dem -Objekt zugeordnete Sitzung aktiv, aber die Verbindung mit der Sitzung wird geschlossen.
Beispiel für die Verwaltung einer Sitzung
Das folgende Beispiel veranschaulicht, wie eine Verbindung geöffnet, eine Sitzung generiert und eine Verbindung beendet wird, während in ADOMD.NET die Sitzung geöffnet bleibt:
Public Function CreateSession(ByVal connectionString As String) As String
Dim strSessionID As String = ""
Dim objConnection As New AdomdConnection
Try
' First, try to connect to the specified data source.
' If the connection string is not valid, or if the specified
' provider does not support sessions, an exception is thrown.
objConnection.ConnectionString = connectionString
objConnection.Open()
' Now that the connection is open, retrieve the new
' active session ID.
strSessionID = objConnection.SessionID
' Close the connection, but leave the session open.
objConnection.Close(False)
Return strSessionID
Finally
objConnection = Nothing
End Try
End Function
static string CreateSession(string connectionString)
{
string strSessionID = "";
AdomdConnection objConnection = new AdomdConnection();
try
{
/*First, try to connect to the specified data source.
If the connection string is not valid, or if the specified
provider does not support sessions, an exception is thrown. */
objConnection.ConnectionString = connectionString;
objConnection.Open();
// Now that the connection is open, retrieve the new
// active session ID.
strSessionID = objConnection.SessionID;
// Close the connection, but leave the session open.
objConnection.Close(false);
return strSessionID;
}
finally
{
objConnection = null;
}
}