私はそれが値を合計して、レコードをカウント数を選択する以外の何ものでもありませんSQL Serverの2016ストアドプロシージャは実行されているが、修正を再コンパイルを停止し、それ
で1日に数回を実行するストアドプロシージャを持っています。出力パラメータとして値を返します。
毎回、たぶん2ヶ月に1回、それはちょうど仕事を止めるでしょう。私はコード(C#)からifを呼び出すときにタイムアウトの問題が発生することになります。
通常、1秒未満で実行されます。私がそれを再コンパイルすると、すべてが正常に戻り、数ヶ月間別の問題は発生しません。
これを引き起こす原因は何ですか?
問題の発見に役立つ追加情報はありますか?ここで
は、クエリのいずれかのサンプルです:
サンプルクエリやコメントでの議論、私はこれがスニッフィングパラメータに関係しているかなり確信していると、データの偏りに基づいて、最適計画に基づき SET ANSI_NULLS ON
ALTER PROCEDURE [dbo].[spName]
@dateFrom as datetime,
@dateTo as datetime,
@CustID as varchar(50)
AS
BEGIN
SET NOCOUNT ON;
declare @TotalReturns as decimal(12,0),
@TotalReturnsValue as decimal(12,2),
--Total Transactions and Value for returns within date range
--**********************************************************
select @TotalReturns = count(*), @TotalReturnsValue = sum(cast(isnull([amountField],'0') as decimal(12,2)))
from [tableName]
where [customerField][email protected]
and [returnDateField] between @dateFrom and @dateTo
and replace([amountField],' ', '') != ''
--**********************************************************
--Outputs
select isnull(@TotalReturns,0) as TotalReturns,
isnull(@TotalReturnsValue,0) as TotalReturnsValue
END
完全なエラーの詳細、またはコードに問題があるときに含める必要がある通常の事情を考慮して、適切なコードを表示していません。 – mason
dbaがprodからdevを更新するときにOracleストアドプロシージャでこの問題が発生していると聞いたことがありますが、SQL Serverには含まれていません...あなたがどこにいるのかDBAに問い合わせることができます – MethodMan
ロックのような音がタイムアウトの原因ですそのSPが実行されているときに同じターゲットテーブルで実行されている他のクエリはありません – LONG