To get the logical and physical files:
Protected Function GetDatabaseFiles(ByVal CatalogName As String, _
ByVal FileName As String) As DatabaseFiles
Const LogType As Byte = 1, TypeName As String = "type", _
LogicalName As String = "name", PhysicalName As String = "physical_name"
Dim df As DatabaseFiles = New DatabaseFiles()
Using Context As SocialContactsTracker1 = _
GetContextForExistingDatabase(CatalogName, FileName)
Using c As SqlConnection = _
New SqlConnection(Context.Database.Connection.ConnectionString)
c.Open()
Using command As SqlCommand = New SqlCommand( _
"SELECT * FROM """ & CatalogName & """.sys.database_files;", c)
Using r As SqlDataReader = command.ExecuteReader()
Do While r.Read()
If r.GetByte(r.GetOrdinal(TypeName)) = LogType Then
df.LogicalLogFile = r.GetString(r.GetOrdinal(LogicalName))
df.PhysicalLogFile = r.GetString(r.GetOrdinal(PhysicalName))
Else
df.LogicalDataFile = r.GetString(r.GetOrdinal(LogicalName))
df.PhysicalDataFile = r.GetString(r.GetOrdinal(PhysicalName))
End If
Loop
End Using
End Using
End Using
End Using
Return df
End Function
Defined within the above method's class:
''' <summary>
''' This class returns the data that was retrieved in the GetDataFiles method
''' </summary>
Protected Class DatabaseFiles
Public LogicalDataFile As String
Public PhysicalDataFile As String
Public LogicalLogFile As String
Public PhysicalLogFile As String
End Class