2013-03-12 6 views
8

SMOをSQL Server 2008 R2 Standardに使用しようとしていますが、オブジェクトをDumpにしようとすると問題が発生しています。SMOでLinqPadを使用する

Error

関連コード:

void Main() 
{ 
    var connectionString = @"Server=(local);Trusted_Connection=True;"; 
    Server server = new Server(new ServerConnection(new SqlConnection(connectionString))); 
    server.ConnectionContext.Connect();  

    server.Dump(); //Error  

    Database database = new Database(server, "master"); 
    database.Refresh(); 

    database.Dump(); // Error 

    IEnumerable<Table> tables = database.Tables.Cast<Table>(); 

    tables.Dump(); //Error 
} 

Assemblies Includes

編集:私は発見したの周り

作業は、固定された再帰の深さとDump方法を使用することです例えばDump(1)ですが、例外はオブジェクトごとに異なるレベルにあります。

答えて

4

SMOオブジェクトのプロパティの1つでGetEnumeratorを呼び出すと例外がスローされ、LINQPadはオブジェクトグラフの残りの部分ではなく、その例外のみをダンプして応答します。

私はこれをLINQPadのバグとみなし、次のベータビルドのために修正しました。

ただし、これを修正しても、SMOオブジェクトのDump()の呼び出しには、年月が過ぎるほど多くのプロパティが含まれているため、永久に使用されます。したがって、再帰の深さを制限するか、Dump(true)を呼び出す必要があります。これは、[結果をDataGridsに]ボタンをクリックするのと同じことです。結果をデータグリッドにダンプすると、グリッドがデータを遅延させるため、問題を回避できます。

関連する問題