У нас есть специальная хранимая процедура, которая разбивает один из полученных параметров и выполняет некоторые вставки на основе разделенных данных.Сохраненная процедура не всегда работает одинаково
Процедура работает нормально, но случайным образом она падает. У нас есть аудит передаваемых параметров, а также аудит значений, которые были разделены при выполнении этой процедуры. По какой-то причине кажется, что разделение добавило дополнительный элемент в начале или иногда смешивает порядок данных Split, что имеет большое значение в нашем случае, поскольку разделяемые данные отформатированы примерно так, как этот UserId # LocationId # Note # RecordId * Date
Странно, что если мы возьмем параметры из аудита и запустим процедуру, которая не удалась, она работает нормально !!! Это сбой один раз в 5000 раз, когда он запускается. Функция SplitString приведена ниже.
ALTER FUNCTION [dbo].[SplitString]
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX))
BEGIN
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1
BEGIN
IF @end = 0
SET @end = LEN(@string) + 1
INSERT INTO @output (splitdata)
VALUES(SUBSTRING(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)
END
RETURN
END
Спасибо за ваш ответ @ewahner. К сожалению, мы не можем просто попробовать, потому что это происходит на живых серверах, и это не то, что мы можем легко воспроизвести, поскольку это происходит раз в миллион. Наиболее тревожно то, что если мы перезапустим sp с теми же параметрами, он отлично работает. –