vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Datenbanken   |   VB-Versionen: VB202217.11.25
Physischen Namen einer SQL-Datenbank ermitteln

Die gezeigte Funktion ermittelt den physischen Namen einer SQL-Datenbank als Tuple (Pfad, Filename)

Autor:   Dietrich HerrmannBewertung:  Views:  107 
ohne HomepageSystem:  Win7, Win8, Win10, Win11kein Beispielprojekt 

Mit diesem Tipp lässt sich der physische name einer SQL-Datenbank schnell ermitteln.

Hier die Funktion: Servername und Datenbankname als Parameter:

''' <summary>
''' SQL-Abfrage, um den physischen Dateinamen zu erhalten
''' </summary>
''' <param name="serverName">der ServerName</param>
''' <param name="DatabaseName">der DataBase-Name</param>
''' <returns>Tuple: Item1= Pfad, Item2=Datenbank-Name (mdf)</returns>
Public Function GetDatabaseFilePath(serverName As String, DatabaseName As String) _
  As Tuple(Of String, String)
 
  Dim temp As Tuple(Of String, String)
  Dim connectionString As String _
    = "Data Source=" + serverName + ";Initial Catalog=master;Integrated Security=True"
  Dim filePath As String = ""
 
  ' sys.master_files enthält Informationen zu allen Datenbankdateien
  Dim query As String = "SELECT physical_name FROM sys.master_files" _
    + " WHERE database_id = DB_ID('" & DatabaseName & "') AND type_desc = 'ROWS'"
 
  Using connection As New SqlConnection(connectionString)
    Using command As New SqlCommand(query, connection)
      Try
        connection.Open()
        ' Die Abfrage gibt den Dateipfad als Zeichenfolge zurück
        Dim result As Object = command.ExecuteScalar()
        If result IsNot Nothing Then
          filePath = result.ToString()
        End If
      Catch ex As Exception
        ' Fehlerbehandlung
        Debug.Print("Fehler beim Ermitteln des Dateipfads: " & ex.Message)
      End Try
    End Using
  End Using
 
  temp = New Tuple(Of String, String)(GetPath(filePath), GetName(filePath))
  Return temp
End Function

Beispielaufruf:

Dim dbPath As String = GetDatabaseFilePath("DeinServerName", "DeinDatabaseName").Item1
Dim dbName As String= GetDatabaseFilePath("DeinServerName", "DeinDatabaseName").Item2

Und jetzt noch die beiden Hilfsfunktionen:

Public Function GetPath(Full As String) As String
  For i As Integer = Full.Length - 1 To 0 Step -1
    ' Find the rightmost  or /, which should be cut off the file part
    If Full.Substring(i, 1) = "" OrElse Full.Substring(i, 1) = "/" Then
      Return Full.Substring(0, i) + ""
    End If
  Next
  Return ""
End Function
Public Function GetName(Full As String) As String
  ' If it's has path it gets how long it only the path is
  Dim Start As Integer = GetPath(Full).Length
 
  ' take of the path and the extension
  Return RemoveExtension(Full.Substring(Start)) 
End Function



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2025 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.