Быстрый ответ ... да.Мы недавно столкнулись с этой проблемой и имели тот же вопрос.У ряда сайтов, которые я нашел, остались вопросы без ответов по этому поводу.После большой охоты у меня не было выбора, кроме как просто пойти на это.Вот что я сделал, и это сработало просто отлично.
Существует обновление, вызываемое триггером, добавленным к одной или нескольким вашим таблицам.Должно выглядеть так:
EXEC dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedure N'YourTableName '
Эта хранимая процедура использует не столбец идентификаторов, а обычный столбец INT и обновляется при помощи changeId = changeId + 1,Как только значение MAX достигнуто, оно, ну, взорвется.Измените этот оператор UPDATE следующим образом:
Замените:
SET changeId = changeId + 1
На:
SET changeId =
CASE
WHEN changeId = 2147483647 --Max INT
THEN 1
ELSE changeId + 1
END
Он должен выглядеть следующим образом:
ALTER PROCEDURE [dbo].[AspNet_SqlCacheUpdateChangeIdStoredProcedure]
@tableName NVARCHAR(450)
AS
BEGIN
UPDATE dbo.AspNet_SqlCacheTablesForChangeNotification WITH (ROWLOCK)
SET changeId =
CASE
WHEN changeId = 2147483647 -- Max INT
THEN 1
ELSE changeId + 1
END
WHERE tableName = @tableName
END