SQL2008 SMO を使用してすべてのデータベースの SpaceAvailable プロパティを取得するアプリケーションがありますが、他のプロセスによって長時間ブロックされることがよくあります。READ UNCOMMITTED 分離で問題なく SSMS で生成されたクエリを実行できることに注意しました。
では、SQL SMO にコミットされていない読み取り分離を強制的に使用させる方法はありますか?
SQL2008 SMO を使用してすべてのデータベースの SpaceAvailable プロパティを取得するアプリケーションがありますが、他のプロセスによって長時間ブロックされることがよくあります。READ UNCOMMITTED 分離で問題なく SSMS で生成されたクエリを実行できることに注意しました。
では、SQL SMO にコミットされていない読み取り分離を強制的に使用させる方法はありますか?
こちらへの返信が遅くなり申し訳ありません。誰かが将来助けを必要とする場合に備えて、これを投稿すると思いました。
Server インスタンスを作成するときに、分離レベルを指定できます。
次の参照があることを確認してください。
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.ConnectionInfo;
そして、接続を作成するときに分離レベルを設定します
Server theSQLServer = new Server(@"cb-z420vmsasq1\sql12");
theSQLServer.ConnectionContext.SqlConnectionObject.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
トランザクションごとにこれを変更する必要がある場合があります。
はい クエリの先頭で SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED を使用できます。また、必要に応じて分離レベルを変更することもできます。msdn.microsoft.com で分離レベルを検索してください。