Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Abfrage der Datenbanken und Tabellen eines Servers

Betrifft: Abfrage der Datenbanken und Tabellen eines Servers von: Hendrik
Geschrieben am: 19.08.2014 12:31:43

Hallo zusammen,

wie kann ich - etwa mit einer ADO-Abfrage - ermitteln, welche Datenbanken auf einem Server vorhanden sind und/oder welche Tabellen in diser Datenbank zur Verfügung stehen?

Ich nutze aktuell zur Auflistung der Spalten einer Tabelle diese Funktion (gibt Anzahl der Spalten zurück und schreibt die Bezeichnung der Spalten in ein Array).

Function abfrageSpaltenListe() As Integer
    Dim objConn As ADODB.Connection
    Dim objRec As ADODB.Recordset
    Dim strConnectionString As String
    Dim strServer As String, strDb As String, strTab As String, strSQL As String
    Dim j As Integer
    
    On Error GoTo err1
        strServer = glStrServer
        strDb = glStrDb
        strTab = glStrTab
        strConnectionString = "Provider=MSDASQL.1;Driver=SQL Server;Server=" & strServer & "; _
Database=" & strDb & ";Trusted_Connection=Yes"
        strSQL = "select top 1 * from " & strDb & "." & strTab
        
        Set objConn = New ADODB.Connection
        objConn.CommandTimeout = intAbfrageTimeOut
        objConn.ConnectionString = strConnectionString
        objConn.Open

        Set objRec = New ADODB.Recordset
        objRec.Open strSQL, objConn, adOpenStatic
        
        If objRec.RecordCount = 1 Then
            ReDim strArrSpalten(1 To objRec.Fields.Count, 1 To 2)
            'Spalte 1: Name
            'Spalte 2: Datentyp (N=Nummerisch, A=Alphanummerisch)
            For j = 0 To objRec.Fields.Count - 1
                strArrSpalten(j + 1, 1) = LCase(objRec.Fields(j).Name)
                strArrSpalten(j + 1, 2) = gibDataTyp(objRec.Fields(j).Type)
            Next j
        End If
        abfrageSpaltenListe = objRec.RecordCount
        
        objConn.Close
    On Error GoTo 0
    
    Exit Function
err1:
    blnBigError = True
    Select Case Err.Number
        Case -2147467259
            MsgBox "Kein Zugriff auf Server oder Datenbank." & vbCrLf & vbCrLf & Err. _
Description, vbCritical
        Case -2147217865
            MsgBox "Kein Zugriff auf die Tabelle." & vbCrLf & vbCrLf & Err.Description,  _
vbCritical
        Case Else
            MsgBox "Fehler beim Ausführen der Abfrage." & Err.Description & vbCrLf & " _
Fehlernummer " & Err.Number, vbCritical
    End Select
End Function
Das Userform würde ich gerne um eine Selektion von DB und Tabelle erweitern.
Danke und Grüße
Hendrik

 

Beiträge aus den Excel-Beispielen zum Thema "Abfrage der Datenbanken und Tabellen eines Servers"