Migrowanie Z ADO MD do ADOMD.NET
ADOMD.Biblioteka netto jest podobna do biblioteki ActiveX danych obiektów wielowymiarowych (ADO MD), rozszerzeniem biblioteki obiektów danych ActiveX (ADO), która służy do uzyskiwania dostępu do wielowymiarowych danych opartych na modelu COM (Component Object Model) klient aplikacji.ADO MD zapewnia łatwy dostęp do danych wielowymiarowych niezarządzanych języków takich jak C++ i Microsoft języka Visual Basic.ADOMD.NETzapewnia łatwy dostęp do analizy (zarówno wielowymiarowych oraz wyszukiwanie danych) dane z zarządzanych języków, takich jak Microsoft C# i Microsoft języka Visual Basic.NET.Ponadto ADOMD.NET udostępnia model obiektowy rozszerzone metadane.
Migrowanie istniejących aplikacji klient z ADO MD do ADOMD.NET jest łatwe, ale istnieje kilka istotnych różnic dotyczących migracji:
Aby zapewnić łączność i danych dostęp do klient aplikacji
ADO MD
ADOMD.NET
Wymaga odwołania do Adodb.dll i Adomd.dll.
Wymaga jednego odniesienie do Microsoft.AnalysisServices.AdomdClient.dll.
AdomdConnection Klasy zapewnia obsługę połączeń, oprócz dostęp do metadane.
Pobieranie metadane dla obiektów wielowymiarowych
ADO MD
ADOMD.NET
Użyj Catalog klasy
Użyj Cubes Właściwość AdomdConnection.
Aby uruchomić kwerendę i powrócić zestaw komórek obiekty
ADO MD
ADOMD.NET
Użyj CellSet klasy
Użyj AdomdCommand klasy
Aby uzyskać dostęp do metadane, który jest używany do wyświetlaniazestaw komórek
Ostrzeżenie
Position Klasy jest obsługiwana dla zgodności ze starszymi wersjami.
Aby pobrać model wyszukiwania metadane
ADO MD
ADOMD.NET
Nie dostępnych klasy.
Użyj jednego z wyszukiwanie danych kolekcji:
MiningModelCollection Zawiera listę każdego modelu górnictwa w danych źródło.
MiningServiceCollection Zawiera informacje dotyczące algorytmów wyszukiwania dostępnych.
MiningStructureCollection Udostępnia informacje dotyczące struktury górnictwo na serwerze.
Aby podświetlić te różnice w poniższym przykładzie migracji porównuje istniejącej aplikacji ADO MD, aby równoważne ADOMD.NET aplikacji.
Spojrzenie na przykład migracji
Zarówno istniejące MD ADO i równoważne ADOMD.NET przykłady kodu zamieszczone w tej sekcji wykonuje ten sam zestaw akcji: utworzenie połączenia z systemem instrukcja Multidimensional Expressions (MDX) i pobieranie danych i metadane.Jednak te dwa zestawy kodu nie należy używać tych samych obiektów do wykonywania tych zadań.
Istniejące ADO MD kodu
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 używa następujących obiektów:
Tworzy połączenie z Catalog obiektu.
Jest wykonywane przy użyciu instrukcja Multidimensional Expressions (MDX) Cellset obiektu.
Pobiera metadane i danych z Position obiekt pobierane z Cellset obiektu.
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 przy użyciu ADOMD.NET, pokazano, jak wykonywać te same czynności, jak w poprzednim przykładzie Visual Basic 6.0.Główna różnica pomiędzy poniższy przykład i przykład ADO MD, przedstawiona jest obiekty, które są używane do wykonywania akcji.ADOMD.NET Przykładzie użyto następujących obiektów:
Tworzy połączenie z AdomdConnection obiektu.
Jest wykonywane przy użyciu instrukcja MDX AdomdCommand obiektu.
Pobiera metadane i danych z Set obiekt pobierane z Cellset obiektu.
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