ここで我慢してください、わかりました!!
SMO は、データベース内の特定のストアド プロシージャの存在を確認するなど、あらゆることを行うために頻繁に使用されます。データ アクセス クラスHasProc
には、ブール値を返す というメソッドがあります。1 年以上、おそらく 2 年以上変更されていないアプリケーションの一部です。
最近、値を返すのに何年も (10 秒) かかっていて、その理由を突き止めようとしています。
SMO サーバーを保持する変数を定義しても (インスタンス化せず、単に定義するだけです)、コードが関数に到着するまでに10 秒の遅延が発生することがわかりました。
True
わかりやすくするために、コードの関連部分を次に示します。
Public Function HasProc(ByVal storedProcName As String) As Boolean
Dim s As Microsoft.SqlServer.Management.Smo.Server
Return True
End Function
Visual Studio 12 では、F11 キーを使用してコードをステップ実行すると、コードのハイライトが に到達する前に10 秒の遅延が発生しPublic Function etc..
ます。
ステートメントをコメントアウトすると、Dim
すべてが即座に実行されます。
さらに奇妙なことに、イーサネット アダプターを無効にすると、遅延は発生しません。
これは、3 台のコンピューターで再現できます。SQL Server 2012 をサポートするために最近アップグレードした VS2012 と SMO v11 を使用しています。
Return True
もう 1 つのことは、ステートメントがステートメントの後ではなく、前にある場合でも遅延が発生することですDim
。
何か案は?