如果我重置表
中的changeId值会发生什么AspNet_SqlCacheTablesForChangeNotification
其中一行当前最大值为2亿,我们的更新失败。我尝试将类型更改为BigInt但读取它的应用程序失败。我需要将这些重置为0.可以吗?会有问题吗?
答案 0 :(得分:3)
快速回答是......是的。我们最近遇到了这个问题并遇到了同样的问题。我发现的一些网站对此没有答案。经过多次狩猎,我别无选择只能去寻找它。这就是我所做的,而且效果很好。
添加到一个或多个表的触发器会调用更新。应该是这样的:
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