2011-01-11 3 views
0

SMOを使用して1つのSQL Serverインスタンス内の複数のデータベースに対して同時に更新スクリプトを実行する方法を見つけようとしています。私たちの環境では更新が必要なデータベースの数はますます増えており、一度に1つずつ反復することは問題になっています(遅すぎます)。SMOを使用してDatabase.ExecuteNonQuery()を同時に呼び出しますか?

私はSMOが並行処理をサポートしていないことを理解しており、私のテストはそれを裏付けています。サーバーオブジェクトレベルで共有メモリがあるようですが、DataReaderコンテキストなどの場合、「リーダーは既に開いています」などの例外をスローし続けます。私は、私が得る正確な例外を持っていないことをお詫びします。私はそれらを取得し、このポストを更新しようとします。

私はSMOの専門家ではなく、正直なところで私のやり方を感じています。私はそれが正しい方向に近づいているとは確信していませんが、それは何かが行われなければならない、あるいは生産性が低下することになります。

あなたはどうやってこのようなことをしますか? SMOで間違ったテクノロジーを使用していますか?私がしたいのは、単一のSQL Serverインスタンス内のデータベースに対してSQLスクリプトを並列に実行することだけです。あなたが与えることができる任意の助け

おかげで、ダニエル

答えて

0

だけで複数のServerConnectionオブジェクトを使用し、それぞれにmultipe Serverオブジェクトをインスタンス化します。基本的に、スレッドごとに1つ。それらがすべて同じデータベースインスタンスに接続するかどうかは関係ありません。

データベースのスキーマをそのように文書化するためのアプリケーションを作成しました。私は複数の "クエリ"(ExecuteNonQuery()だけでなく、SMO上の他の関数も)を同時に実行します。これは少なくとも今日までは問題ありません。残念ながら、彼らはむしろ「基本的な」ものを除けば、SMOの多くの文書化ではないようです。

+0

よろしくお願い致します。私はServerConnectionオブジェクトをすべてのスレッド間で共有しようとしていましたが、それは私の問題がどこにあるのかと思います。正しい方向に私を指してくれてありがとう。 – JimDaniel

関連する問題