必要なパラメーターなしで.Net SqlClientデータプロバイダーから断続的に呼び出されるEventClass RPC:Completedを使用して、いくつかのストアドプロシージャをトレースしました-単に "exec SprocName"。
トレースのTextDataに表示されるとおりに手動で呼び出すと、例外が生成されますが、元のトレースでは例外が生成されません。これらの「パラメーターのない」呼び出しの「エラー」列には「1-エラー」と表示されますが、呼び出しがどのように例外を生成していないのかわかりません。
最初はプロファイラーの不具合であると思っていました。「1-エラー」が原因でパラメーターがTextDataから切り捨てられましたが、拡張イベントセッションで同じ結果が表示されました。
プロファイラートレースまたはイベントセッションでこのようなものを見たことがありますか?アプリはほぼ確実にこれらの呼び出しを一部のEdge-caseエラーの一部として行っていますが、SQLサーバーが例外をスローしないのはなぜですか?
SET PARSEONLY ON がこれを行います。 FMTONLYはエラーを生成します。
例えば:
USE [AdventureWorks]
GO
set parseonly on
go
exec [uspGetBillOfMaterials]
go
set parseonly off