У меня есть несколько хранимых процедур на нашем сервере SQL Server 2008, которые выполняются одна за другой, им грозит ошибка SQL (истекло время ожидания выполнения. Период ожидания истек до завершения операции или сервер не отвечает) напоследний, который обновляет или вставляет таблицу с 1 миллионами записей, в то время как он работает с небольшими файлами, но при обновлении или вставке этого количества записей он останавливается и выдает эту ошибку. Как я могу настроить хранимую процедуру, я попытался очистить сервер с помощью sp_updatestatesно не повезло, я был бы признателен за любую помощь, спасибо, вот мой код хранимой процедуры:
USE [DBTest]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_UpdateData]
@ItemsExt dbo.TT_ItemsExt READONLY
AS
BEGIN
SET NOCOUNT ON;
Declare
@ItemID nvarchar(36)
,@DescE nvarchar(50)
,etc
,etc
---------------------------------------
DECLARE Item_cursor CURSOR FOR
SELECT
ItemID
,DescE
,etc
,etc
FROM @ItemsExt
OPEN Item_cursor
FETCH NEXT FROM Item_cursor INTO
@ItemID
,@DescE
,etc
,etc
WHILE @@FETCH_STATUS = 0
BEGIN
If exists (select * from Items WHERE ItemID = @ItemID)
Begin
Update dbo.Items SET
DescEng = @DescE
,etc = @etc
WHERE ItemID = @ItemID
End
ElSE
Begin
Declare @ItemNumber nvarChar(36)
SET @ItemNumber = REPLACE((REPLACE(RIGHT(@ItemID, LEN(@ItemID) - 1))
insert into dbo.Items
(ItemID , etc)
VALUES (@ItemID, etc)
End
--ItemsReplacment Table
If exists (select * from dbo.ItemsReplacement WHERE ItemID = @ItemID)
Begin
Update dbo.ItemsReplacement SET
ItemAlter= @AlternativeItem
,etc
WHERE ItemID = @ItemID
End
ElSE
Begin
Insert Into dbo.ItemsReplacement Values (
@ItemID
,etc
,etc)
End
FETCH NEXT FROM Item_cursor INTO
@ItemID
,@DescE
,etc
,etc
END
CLOSE Item_cursor;
DEALLOCATE Item_cursor;
END
ps: тайм-аут выполнения равен 0, что означает бесконечность.