パフォーマンスの問題があります
.Net 1.1からストアドプロシージャを実行する必要があります。このストアドプロシージャは8個のストアドプロシージャを呼び出します。それらのそれぞれは、古い情報と新しい情報との比較をスローするための情報を処理し、データベースの物理テーブルを検出します。8つのネストされたストアドプロシージャでのパフォーマンスの問題
問題はSSMSから直接実行しようとしているために発生します。サーバーのクラッシュが始まり、遅くて作業がほとんど不可能になります。私は、インフラストラクチャの人々はサーバー上で直接サービスをrestarする必要があると思います。
私は開発環境で作業していますので問題はほとんどありませんが、これを実稼働環境にアップロードすることはできません。
私は、比較の目的でのみ使用手順を考えていましたが、物理データには決して影響しませんでした。プリンシパルプロシージャのテンポラリテーブルで情報を取得してから、try-catchおよびbegin-endトランザクションブロックを開き、プリンシパル内のTempテーブルのinformacionに格納されているデータベースに影響を与えます。
私のプリンシパルストアは次のように表示されます:これは私がこれを行うための最良の方法ですか?
create proc spTest
as
/*Some processes here, temporary tables, etc...*/
begin try
begin distributed transaction
sp_nested1
sp_nested2
sp_nested3
sp_nested4
sp_nested5
sp_nested6
sp_nested7
sp_nested8
/*more processes here, updates, deletes, extra inserts, etc...*/
commit transaction
end try
begin catch
rollback transaction
DECLARE @ERROR VARCHAR(3000)
SELECT @ERROR = CONVERT(VARCHAR(3000),ERROR_MESSAGE())
RAISERROR(@ERROR,16,32)
RETURN
end catch
各ネストされたストアドプロシージャの基本的な構造は同じですが、唯一のそれぞれが、独自のtryおよびcatchブロックがあり、他のPROCを呼び出すことはありません。
任意の助けが本当に理解されるであろう...イムは使用したバージョンは、SQL Server 2005の
で物事が遅いとき、問題がで可能性があります....事前に
呼び出す手順は問題ではありませんが、その手順は問題の可能性が最も高いです。これを解決するために必要な情報の1%しか提供していません。たとえば、あなたが4つのドアを持つ赤い車を持っていると言いましたが、それはうまく始まりません。どのようにして、与えられた情報で車の問題を診断することができますか? –
+1 @KM - OPが考えていることはおそらくそうではないでしょうか、そうでなければ彼はSOの助けを求めないでしょう! :) – JNK
まあ最初の段落では、それぞれのネストされたプロシージャが何をしているのかを説明しています。 "彼らのそれぞれは、古い情報と新しい情報を比較して、DataBaseの物理テーブルを見つけた後に情報を処理します。"申し訳ありませんが、明らかではない場合は...しかし、私はもっと情報を提供することはできません..たぶん私はあなたの情報を取得することができますテーブルやデータベースのさまざまなテーブルから一時テーブルにして、他のテーブルから。次のコメントに続き..... – Alejandro