Praca z połączeniami i sesje w ADOMD.NET
W XML for Analysis (XMLA) sesji zapewniają obsługę operacji stanowe podczas dostępu do dane analityczne.Sesje klatkę zakres i kontekst poleceń i transakcji dla źródło dane analityczne.Są używane do zarządzania sesjami elementy XMLA BeginSession, sesji, i EndSession.
ADOMD.NET używa tych trzech elementów XMLA w sesja rozpocząć sesja, wykonywania kwerend lub pobierać dane podczas sesja i zamknąć sesja.
Uruchamianie sesji
SessionID Właściwość AdomdConnection obiekt zawiera identyfikator sesja aktywnych, związane z AdomdConnection obiektu.Za pomocą tej właściwość poprawnie, można efektywnie kontrolować statefulness klient i serwera aplikacji:
Jeśli SessionID właściwość nie jest zestaw do sesja prawidłowy identyfikator, kiedy Open wywoływana jest metoda, AdomdConnection obiektu żądania nowy identyfikator sesja od dostawca.ADOMD.NET inicjuje sesja, wysyłając XMLA BeginSession nagłówka do dostawca.Jeśli ADOMD.NET jest pomyślne rozpoczyna sesja ADOMD.NET ustawia wartość SessionID Właściwość Identyfikator sesja, nowo utworzony sesja.
Jeśli SessionID właściwość jest zestaw do sesja prawidłowy identyfikator, kiedy Open wywoływana jest metoda, AdomdConnection obiektu próbuje połączyć określonej sesja.
Jeśli AdomdConnection obiektu nie może połączyć się z określonej sesja lub jeśli dostawca nie obsługuje sesje, wyjątek jest.
Ostrzeżenie
Po miały ADOMD.NET utworzenia sesja, można połączyć wiele AdomdConnection obiektów do pojedynczej sesja aktywnych lub można odłączyć jeden AdomdConnection obiektu z tej sesja i ponowne łączenie obiektu do innej sesja.
Praca w sesji
Po ADOMD.Łączy NET AdomdConnection obiektu do prawidłowej sesja ADOMD.NET wyśle XMLA Session nagłówka do dostawca z każdego żądania danych lub metadane przez aplikację.Każde żądanie będzie miał identyfikator sesja zestaw do wartości SessionID właściwość.
Identyfikator sesji nie gwarantuje, że sesja pozostaje ważna.Jeśli sesja wygasa (na przykład, jeśli limit czasu sesji lub połączenie zostanie przerwane), Dostawca można wybrać opcję zakończenia i wycofać działania tej sesji.W takim przypadku wszystkie kolejne metoda wywołuje z AdomdConnection obiektu spowoduje zgłoszenie wyjątku.Ponieważ wyjątki generowane są tylko wtedy, gdy dalej żądanie jest wysyłane do dostawca, a nie kiedy sesja wygasa, aplikacja musi mieć możliwość obsługę tych wyjątków w każdym czas aplikacji pobiera dane i metadane od dostawca.
Zamykania sesji
Jeśli Close bez określenia wartości wywoływana jest metoda endSession parametr, lub jeśli endSession parametr jest zestaw true połączenia do sesja i sesja skojarzonych z AdomdConnection są zamykane.Aby zamknąć sesja ADOMD.NET wysyła XMLA EndSession nagłówka do dostawca z Identyfikatorem sesja zestaw do wartości SessionID właściwość.
Jeśli Close wywoływana jest metoda endSession parametr zestaw false, sesja związane z AdomdConnection pozostaje aktywny obiekt, ale połączenie z sesja jest zamykane.
Przykład zarządzanie sesją
Poniższy przykład ilustruje sposób otwarcia połączenia, utworzenia sesja i zamknięcie połączenia przy zachowaniu sesja otwarty w ADOMD.NET:
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;
}
}