В настоящее время я использую SMO и C # для обхода баз данных, чтобы создать дерево настроек, представляющих различные аспекты двух баз данных, а затем сравнивать эти деревья, чтобы увидеть, где и как они отличаются.
Проблема в том, что для 2 баз данных разумного размера требуется почти 10 минут для их локального сканирования и сбора информации о таблице / столбце / хранимой процедуре, которую я хочу сравнить.
Есть ли лучший интерфейс, чем SMO, для доступа к базам данных таким способом? Я не хотел бы включать какие-либо дополнительные зависимости, но я приму эту боль для улучшения скорости на 50%. Ниже приведен пример перечисления таблиц и столбцов.
Microsoft.SqlServer.Management.Smo.Database db = db_in;
foreach (Table t in db.Tables)
{
if (t.IsSystemObject == false)
{
foreach (Column c in t.Columns)
{
}
}
}