現在、SMO と C# を使用してデータベースを走査し、2 つのデータベースのさまざまな側面を表す設定のツリーを作成してから、これらのツリーを比較して、それらがどこでどのように異なるかを確認しています。
問題は、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)
{
}
}
}