J'utilise actuellement SMO et C# pour parcourir des bases de données afin de créer un arbre de paramètres représentant divers aspects des deux bases de données, puis de comparer ces arbres pour voir où et comment ils sont différents. Le problème est que, pour 2 bases de données de taille raisonnable, il faut près de 10 minutes pour les explorer localement et collecter des informations de procédure table/colonne/stockées que je souhaite comparer.Est-il possible d'accélérer la traversée des objets de gestion SQL Server d'une base de données existante?
Existe-t-il une meilleure interface que SMO pour accéder aux bases de données d'une telle manière? Je ne voudrais pas inclure de dépendances supplémentaires, mais je vais prendre cette douleur pour une amélioration de la vitesse de 50%. Voici un exemple de la façon dont j'énumère les tables et les colonnes.
Microsoft.SqlServer.Management.Smo.Database db = db_in;
foreach (Table t in db.Tables)
{
if (t.IsSystemObject == false)
{
foreach (Column c in t.Columns)
{
}
}
}
Une note, assurez-vous de définir votre application à MTAThread –