Я думаю, что самый простой подход - запустить скрипт SQL на экземпляре сервера SQL, который всегда будет возвращать вам правильные данные и пути к файлам журналов. Следующий sql сделает трюк
SELECT
db.name AS DBName,
(select mf.Physical_Name FROM sys.master_files mf where mf.type_desc = 'ROWS' and db.database_id = mf.database_id ) as DataFile,
(select mf.Physical_Name FROM sys.master_files mf where mf.type_desc = 'LOG' and db.database_id = mf.database_id ) as LogFile
FROM sys.databases db
order by DBName
Вы все еще можете выполнить этот sql, используя SMO, если хотите, который вернет вам набор данных, а затем вы сможете извлечь эту информацию.
var result = new List();
var server = new Server( serverInstanceName );
var data = server.Databases[ "master" ].ExecuteWithResults(sql);
foreach ( DataRow row in data.Tables[ 0 ].Rows )
result.Add( new DatabaseInfo( row[ "DBName" ].ToString(), row[ "DataFile" ].ToString(), row[ "LogFile" ].ToString() ) );
return result;
Если вы будете использовать этот фрагмент, то обязательно создайте класс DatabaseInfo, в котором будет храниться информация, возвращаемая экземпляром сервера Sql.