Udostępnij za pośrednictwem


Migrating From ADO MD To ADOMD.NET

Biblioteka ADOMD.NET jest podobne do biblioteki ActiveX Data Objects Multidimensional (ADO MD), rozszerzenie biblioteki obiektów ActiveX Data Objects (ADO), która jest używana do uzyskiwania dostępu do danych wielowymiarowych w Component Object Model (COM) opartych na klient aplikacji.ADO MD zapewnia łatwy dostęp do danych wielowymiarowych niezarządzanego języków, takich jak C++ i Microsoft Program Visual Basic. Program ADOMD.NET zapewnia łatwy dostęp do analizy (zarówno wielowymiarowych oraz wyszukiwanie danych) dane z zarządzanych języków takich jak Microsoft C# i Microsoft Program Visual Basic .NET. Ponadto program ADOMD.NET zapewnia model obiektowy rozszerzonych metadane.

Migracja istniejących aplikacji klient z obiektów ADO MD ADOMD.NET jest łatwe, ale istnieje kilka istotnych różnic w odniesieniu do migracji:

  • Aby zapewnić dostęp połączenia i dane do aplikacji klienckich

    ADO MD

    ADOMD.NET

    Wymaga odwołania do adodb.dll i adomd.dll.

    Wymaga jednego odwołania do Microsoft.AnalysisServices.AdomdClient.dll.

    The AdomdConnection class provides connectivity support, in addition to access to metadane.

  • Aby pobrać metadane dla obiektów wielowymiarowych

    ADO MD

    ADOMD.NET

    Użycie Catalog Klasa.

    Użycie Cubes() Właściwość AdomdConnection.

  • Aby uruchomić kwerendę i przywrócić zestaw komórek obiektów

    ADO MD

    ADOMD.NET

    Użycie CellSet Klasa.

    Użycie AdomdCommand Klasa.

  • Aby uzyskać dostęp do metadane, które służy do wyświetlania zestaw komórek

    ADO MD

    ADOMD.NET

    Użycie Position Klasa.

    Użycie Set i Tuple obiekty.

    Uwaga

    The Position class is supported for backward compatibility.

  • Pobieranie metadane model wyszukiwania

    ADO MD

    ADOMD.NET

    Nie dostępnych klasy.

    Użyj jednej z kolekcji wyszukiwanie danych:

    • The MiningModelCollection contains a list of every model wyszukiwania in the data urządzenie źródłowe.

    • The MiningServiceCollection provides information about the available mining algorithms.

    • The MiningStructureCollection exposes information about the mining structures on the server.

Aby wyróżnić tych różnic w poniższym przykładzie migracji porównuje istniejącego ADO MD aplikacji do aplikacji ADOMD.NET równoważne.

Na przykład migracji

MD istniejących obiektów ADO i równoważne przykłady kodu ADOMD.NET przedstawione w tej sekcji należy wykonać ten sam zestaw akcji: Tworzenie połączenia, uruchomiony instrukcja Multidimensional Expressions (MDX) i pobierania danych i metadane. Jednak te dwa zestawy kodu nie należy używać tych samych obiektów do wykonywania tych zadań.

Istniejący kod ADO MD

The following code example, drawn from ADO MD 2.8 documentation, is written in Microsoft Visual Basic® 6.0 and uses ADO MD to demonstrate how to connect to and query a Microsoft SQL Server data source.W tym przykładzie ADO MD następujące obiekty:

  • Tworzy połączenie z Catalog obiekt.

  • Uruchamia, używając instrukcja Multidimensional Expressions (MDX) Cellset obiekt.

  • Pobiera metadane i danych z Position obiekt pobierane z Cellset obiekt.

Private Sub cmdCellSettoDebugWindow_Click()
Dim cat As New ADOMD.Catalog
Dim cst As New ADOMD.Cellset
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim strServer As String
Dim strSource As String
Dim strColumnHeader As String
Dim strRowText As String

On Error GoTo Error_cmdCellSettoDebugWindow_Click
Screen.MousePointer = vbHourglass
'*-----------------------------------------------------------------------
'* Set server to local host.
'*-----------------------------------------------------------------------
    strServer = "LOCALHOST"

'*-----------------------------------------------------------------------
'* Set MDX query string source.
'*-----------------------------------------------------------------------
    strSource = strSource & "SELECT "
    strSource = strSource & "{[Measures].members} ON COLUMNS,"
    strSource = strSource & _
        "NON EMPTY [Store].[Store City].members ON ROWS"
    strSource = strSource & " FROM Sales"

'*-----------------------------------------------------------------------
'* Set active connection.
'*-----------------------------------------------------------------------
        cat.ActiveConnection = "Data Source=" & strServer & _
            ";Provider=msolap;"

'*-----------------------------------------------------------------------
'* Set cellset source to MDX query string.
'*-----------------------------------------------------------------------
        cst.Source = strSource

'*-----------------------------------------------------------------------
'* Set cellset active connection to current connection
'*-----------------------------------------------------------------------
    Set cst.ActiveConnection = cat.ActiveConnection

'*-----------------------------------------------------------------------
'* Open cellset.
'*-----------------------------------------------------------------------
    cst.Open

'*-----------------------------------------------------------------------
'* Allow space for row header text.
'*-----------------------------------------------------------------------
strColumnHeader = vbTab & vbTab & vbTab & vbTab & vbTab & vbTab

'*-----------------------------------------------------------------------
'* Loop through column headers.
'*-----------------------------------------------------------------------
       For i = 0 To cst.Axes(0).Positions.Count - 1
            strColumnHeader = strColumnHeader & _
                cst.Axes(0).Positions(i).Members(0).Caption & vbTab & _
                    vbTab & vbTab & vbTab
       Next
       Debug.Print vbTab & strColumnHeader & vbCrLf

'*-----------------------------------------------------------------------
'* Loop through row headers and provide data for each row.
'*-----------------------------------------------------------------------
        strRowText = ""
        For j = 0 To cst.Axes(1).Positions.Count - 1
            strRowText = strRowText & _
                cst.Axes(1).Positions(j).Members(0).Caption & vbTab & _
                    vbTab & vbTab & vbTab
            For k = 0 To cst.Axes(0).Positions.Count - 1
                strRowText = strRowText & cst(k, j).FormattedValue & _
                    vbTab & vbTab & vbTab & vbTab
            Next
            Debug.Print strRowText & vbCrLf
            strRowText = ""
        Next

    Screen.MousePointer = vbDefault
Exit Sub

Error_cmdCellSettoDebugWindow_Click:
   Beep
   Screen.MousePointer = vbDefault
   MsgBox "The following error has occurred:" & vbCrLf & _
      Err.Description, vbCritical, " Error!"
   Exit Sub
End Sub

Równoważne ADOMD.NET kodu

Poniższy przykład napisane w języku Visual Basic .NET i za pomocą ADOMD.NET, pokazuje, jak wykonywać te same czynności, jak w poprzednim przykładzie kodu języka Visual Basic 6.0.Główna różnica między w poniższym przykładzie, a wcześniej podanym przykładzie ADO MD jest obiekty, które są używane do wykonywania akcji.W przykładzie ADOMD.NET używa następujących obiektów:

  • Tworzy połączenie z AdomdConnection obiekt.

  • Uruchamia, używając instrukcja MDX AdomdCommand obiekt.

  • Pobiera metadane i danych z Set obiekt pobierane z Cellset obiekt.

Private Sub DisplayCellSetInOutputWindow()
    Dim conn As AdomdConnection
    Dim cmd As AdomdCommand
    Dim cst As CellSet
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim strServer As String = "LOCALHOST"
    Dim strSource As String = "SELECT [Measures].members ON COLUMNS, " & _
        "NON EMPTY [Store].[Store City].members ON ROWS FROM SALES"
    Dim strOutput As New System.IO.StringWriter

    '*-----------------------------------------------------------------------
    '* Open connection.
    '*-----------------------------------------------------------------------
    Try
        ' Create a new AdomdConnection object, providing the connection
        ' string.
        conn = New AdomdConnection("Data Source=" & strServer & _
        ";Provider=msolap;")
        ' Open the connection.
        conn.Open()
    Catch ex As Exception
        Throw New ApplicationException( _
            "An error occurred while connecting.")
    End Try

    Try
    '*-----------------------------------------------------------------------
    '* Open cellset.
    '*-----------------------------------------------------------------------
        ' Create a new AdomdCommand object, providing the MDX query string.
        cmd = New AdomdCommand(strSource, conn)
        ' Run the command and return a CellSet object.
        cst = cmd.ExecuteCellSet()

    '*-----------------------------------------------------------------------
    '* Concatenate output.
    '*-----------------------------------------------------------------------

    ' Include spacing to account for row headers.
    strOutput.Write(vbTab, 6)

    ' Iterate through the first axis of the CellSet object and
    ' retrieve column headers.
    For i = 0 To cst.Axes(0).Set.Tuples.Count - 1
        strOutput.Write(cst.Axes(0).Set.Tuples(i).Members(0).Caption)
        strOutput.Write(vbTab, 4)
    Next
    strOutput.WriteLine()

    ' Iterate through the second axis of the CellSet object and
    ' retrieve row headers and cell data.
    For j = 0 To cst.Axes(1).Set.Tuples.Count - 1
        ' Append the row header.
        strOutput.Write(cst.Axes(1).Set.Tuples(j).Members(0).Caption)
        strOutput.Write(vbTab, 4)

        ' Append the cell data for that row.
        For k = 0 To cst.Axes(0).Set.Tuples.Count - 1
            strOutput.Write(cst.Cells(k, j).FormattedValue)
            strOutput.Write(vbTab, 4)
        Next
        strOutput.WriteLine()
    Next

    ' Display the output.
    Debug.WriteLine(strOutput.ToString)

    '*-----------------------------------------------------------------------
    '* Release resources.
    '*-----------------------------------------------------------------------
        conn.Close()
    Catch ex As Exception
        ' Ignore or handle errors.
    Finally
        cst = Nothing
        cmd = Nothing
        conn = Nothing
    End Try
End Sub