Udostępnij za pośrednictwem


Praca ze źródłami danych (DSO)

Ostrzeżenie

  Ta funkcja zostanie usunięta z następnej wersji programu Microsoft SQL Server. Nie należy stosować tej funkcji w nowych projektach oraz jak najszybciej należy zmodyfikować aplikacje, w których obecnie jest używana ta funkcja.

Kolekcje źródeł danych (czyli MDStore obiektów ClassType clsDataSource) są zawarte w MDStore obiektów ClassType clsDatabase, clsCube, i clsPartition.Każdy obiekt źródła danych określa zewnętrznej bazy danych, który będzie używany jako źródło danych.

Baza danych może zawierać wiele źródeł danych w jego DataSources kolekcja.Jednak każdy moduł i partycja zawiera tylko jedno źródło danych.

Dwa przykłady w tym temacie przedstawienie sposobu wyświetlania i dodać źródło danych w bazie danych DataSources kolekcja.

Wykaz źródeł danych

Najprostszym sposobem listy źródeł danych jest iterować przez DataSources kolekcja MDStore obiektu bazy danych, jak pokazano w poniższym przykładzie kodu, który zawiera Name i ConnectionString Właściwości każdego źródło danych dla każdej bazy danych na danym serwerze analizy.

Następujący kod przykład pętli poprzez DataSources kolekcja każdej bazy danych na serwerze lokalnym analizy niektórych podstawowych właściwości dla każdego źródło danych w okienku bezpośrednim drukowania:

Private Sub ListDataSources()
    Dim dsoServer As New dso.Server
    Dim dsoDB As dso.MDStore
    Dim dsoDS As dso.DataSource

    ' Create a connection to the Analysis server.
    dsoServer.Connect "LocalHost"

    ' Step through the databases in the
    ' MDStores collection of the server.
    For Each dsoDB In dsoServer.MDStores

        ' Print the name & description of the database.
        Debug.Print "DATABASE: " & dsoDB.Name & " - " & _
            dsoDB.Description

        ' Determine whether the database has data sources.
        If dsoDB.DataSources.Count = 0 Then
            Debug.Print "    Data source: None"
        Else
            ' Iterate through and print the data source
            ' information.
            For Each dsoDS In dsoDB.DataSources
               Debug.Print "    Data source: " & dsoDS.Name
               Debug.Print "         Valid?:" & dsoDS.IsValid
            Next
        End If
    Next

End Sub

Dodaj źródło danych

Proces, aby dodać nowe źródło danych jest podobny do procesu dodawania nowej bazy danych.AddNew metoda DataSources kolekcja dla danej bazy danych tworzy nowe źródło danych dla bazy danych.

Poniższy przykład kodu dodaje źródło danych o nazwie FoodMart do TestDB obiektu bazy danych na serwerze lokalnym analizy:

Private Sub AddDataSource()
    Dim dsoServer As New DSO.Server
    Dim dsoDB As DSO.MDStore
    Dim dsoDS As DSO.DataSource

    Dim strDBName As String
    Dim strDSName As String
    Dim strDSConnect As String

    ' Initialize variables for the database name,
    ' data source name, and the ConnectionString property
    ' for the data source.
    strDBName = "TestDB"
    strDSName = "FoodMart"
    strDSConnect = "Provider=SQLOLEDB.1;" & _
        "Integrated Security=SSPI;" & _
        "Persist Security Info=False;" & _
        "Initial Catalog=FoodMart;" & _
        "Data Source=FoodMartServer;" & _
        "Connect Timeout=15"

    ' Create a connection to the Analysis server.
    dsoServer.Connect "LocalHost"

    ' Locate the database first.
    If dsoServer.MDStores.Find(strDBName) Then
        Set dsoDB = dsoServer.MDStores(strDBName)

        ' Check to see whether the data source already exists.
        If dsoDB.DataSources.Find(strDSName) Then
            MsgBox "Data source " & strDSName & _
                " already exists for database " & strDBName
        Else
            ' Create a new data source.
            Set dsoDS = dsoDB.DataSources.AddNew(strDSName)
            ' Add the ConnectionString properties
            dsoDS.ConnectionString = strDSConnect
            ' Update the data source.
            dsoDS.Update
            ' Inform the user
            MsgBox "Data source " & strDSName & _
                " has been added to database " & strDBName
        End If
    Else
        MsgBox strDBName & " is missing."
    End If

End Sub