,如果我在表我可以重置緩存表中ChangeId更改通知
AspNet_SqlCacheTablesForChangeNotification
一排在2.X十億目前刷爆復位changeId值會發生什麼情況,我們的更新失敗。我嘗試將類型更改爲BigInt,但讀取它的應用程序失敗。我需要將它們重置爲0.是否可以?會有問題嗎?
,如果我在表我可以重置緩存表中ChangeId更改通知
AspNet_SqlCacheTablesForChangeNotification
一排在2.X十億目前刷爆復位changeId值會發生什麼情況,我們的更新失敗。我嘗試將類型更改爲BigInt,但讀取它的應用程序失敗。我需要將它們重置爲0.是否可以?會有問題嗎?
快速回答是...是的。我們最近遇到這個問題,並有同樣的問題。我發現的許多網站都有關於此的未解答的問題。經過多次的狩獵之後,我別無選擇,只能爲此而努力。這就是我所做的,它工作得很好。
有一個更新被添加到一個或多個表中的觸發器調用。應該是這樣的:
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
感謝您的回答!這很有趣 - 我不再爲公司工作,這是一個問題,客戶已經與我的前僱主放棄了合同,但這仍然是一件好事。 – DaveDev
很高興有用。我知道這讓我感到沮喪,因爲我沒有找到答案,所以希望這可以幫助任何遇到它的人。 –
你知道如何/在哪裏了changeID的舊版本保留了嗎? –