Udostępnij przez


Working with Connections and Sessions in ADOMD.NET

W formacie XML do analizy (XMLA) sesji zapewniają obsługę operacji stanowe podczas dostępu do dane analityczne.Sesje ramki zakres i kontekst poleceń i transakcji dla urządzenie źródłowe dane analityczne.Elementy XMLA używane do zarządzania sesjami BeginSession, Sesja, and EndSession.

Program ADOMD.NET korzysta z tych trzech elementów sesja XMLA podczas rozpoczynania sesja, wykonywanie kwerendy lub pobierać dane podczas sesja i zamknięcia sesja.

Uruchamianie sesja

The SessionID() właściwość of the AdomdConnection object contains the identifier of the active sesja associated with the AdomdConnection object. Za pomocą tej właściwość poprawnie, można efektywnie kontrolować statefulness zarówno klient, jak i na serwerze w aplikacji:

  • Jeśli SessionID() Właściwość nie jest zestaw do sesja prawidłowy identyfikator kiedy Open() wywoływana jest metoda, AdomdConnection Obiekt żądania identyfikator nowej sesja od dostawca. Program ADOMD.NET inicjuje sesja, wysyłając XMLA BeginSession Nagłówek do dostawca. Jeśli program ADOMD.NET zakończy się pomyślnie rozpoczyna sesja, ADOMD.NET ustawia wartość SessionID() Właściwość Identyfikator sesja nowo utworzonego sesja.

  • Jeśli SessionID() Właściwość jest zestaw do sesja prawidłowy identyfikator kiedy Open() wywoływana jest metoda, AdomdConnection obiekt próbuje połączyć się z określonej sesja.

Jeśli AdomdConnection obiekt nie może połączyć się z określonej sesja, lub jeśli dostawca nie obsługuje sesje, zostanie zgłoszony wyjątek.

Uwaga

Po miały ADOMD.NET utworzenia sesja, można połączyć wiele AdomdConnection obiekty, do których pojedynczych aktywnej sesja, lub można odłączyć jednego AdomdConnection obiekt z tej sesja i ponowne łączenie obiektu do innej sesja.

Praca w sesja

Po połączeniu z ADOMD.NET AdomdConnection obiekt do prawidłowej sesja ADOMD.NET wyśle XMLA Session Nagłówek do dostawca z każdego żądania dla danych i metadane przez aplikację. Każde żądanie będzie miał identyfikator sesja zestaw wartości SessionID() Właściwość.

Identyfikator sesji nie gwarantuje, że sesja pozostaje ważny.Jeśli sesja wygasa (na przykład, jeśli limit czasu sesji lub połączenie zostanie przerwane), Dostawca można zakończyć i wycofać działania tej sesji.W takim przypadku wszystkie kolejne metoda wywołuje z AdomdConnection obiekt będzie Zgłoś wyjątek. Ponieważ wyjątki są generowane tylko wtedy, gdy następnego żądania jest wysyłany do dostawca, a nie kiedy sesja wygasa, aplikacja musi być w stanie obsłużyć te wyjątki ilekroć czy aplikacja pobiera dane i metadane od dostawca.

Zamykanie sesja

Jeśli Close() bez określenia wartości wywoływana jest metoda endSession parametr, lub jeśli endSession parametr jest zestaw wartość PRAWDA, połączenie z sesja i skojarzone z sesja AdomdConnection obiekt jest zamknięty. Aby zamknąć sesja, ADOMD.NET wysyła XMLA EndSession Nagłówek do dostawca, z IDENTYFIKATOREM sesja zestaw wartości SessionID() Właściwość.

Jeśli Close() Metoda jest wywoływana z endSession Parametr zestaw false, sesja skojarzonych z AdomdConnection obiekt pozostaje aktywne, ale jest zamknięte połączenie z sesja.

Przykładem zarządzanie sesja

Poniższy przykład ilustruje sposób otwarcia połączenia, tworzenie sesja i zamknięcie połączenia przy jednoczesnym zachowaniu otwarty program ADOMD.NET sesja:

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;
    }
}