У меня есть эта хранимая процедура для восстановления данных из базы данных (динамический запрос). и я вызываю эту хранимую процедуру из C# codebehind, я передаю два параметра из C# в эту хранимую процедуру.Ошибка таймаута в хранимой процедуре в C#
alter procedure [dbo].[GetCompleteCPTDetails]
@Practice_Short_Name varchar(50),
@Uploaded_Date nvarchar(max)
as
begin
DECLARE @CPTtablename nvarchar(300)
DECLARE @vQuery NVARCHAR(max)
DECLARE @upldate nvarchar(100)
set @upldate = @Uploaded_Date
set @CPTtablename ='ACER_CLAIMS_MASTER_DETAIL_Hist_'[email protected]_Short_Name
SET @vQuery = 'select Practice_Short_Name,Service_Date_From,Carrier_Name,
Location_Description,Patient_Number,Patient_First_Name,
Patient_Last_Name,Voucher_Number,Procedure_Code,Service_Fees,
Service_Payments,Service_Adjustments,Acer_Status,Acer_Allowed_Amount
from ' [email protected]+'
where Uploaded_Date =''' + @upldate + '''
order by acer_status asc, Service_Date_From desc, Patient_First_Name asc'
EXEC (@vQuery)
end
GO
, но когда я выполняю этот запрос, он дает мне ошибку TimeOut. но если я присваиваю значение моим параметрам в SP и Run SP из окон запроса, то он отображает правильные данные.
Может любой, пожалуйста, объясните мне, почему он дает ошибку таймаута, если я вызываю его из C# codebehind.
Ну, для начала, сколько времени требуется для выполнения? Тайм-аут по умолчанию для 'SqlCommand' составляет 30 секунд, и я предполагаю, что вы используете его в' C# '; поэтому, если для выполнения этой процедуры требуется более 30 секунд, вы получите исключение CommandTimeout. –
Остановить плохой код SQL, другие могут его скопировать. Ваш SP недостаточно эффективен и уязвим для атак SQL-инъекций. – Darek
Попробуйте вызвать очень простую процедуру (например, SELECT TOP 1 * FROM SomeTable) - у вас все еще есть тайм-аут? Часто «проблема с таймаутом» на самом деле связана с плохой строкой соединения. –