2016-10-11 100 views
4

我有一臺安裝了Hangfire的服務器。我還沒有檢查過一段時間,似乎有一個經常性的工作流氓。它停止工作,然後堆積了重試,看起來完全鎖定。如何安全地將Hangfire重置爲乾淨狀態?

我想清除我的數據庫並重新開始。我可以刪除所有表格中的數據,還是應該刪除表格並讓Hangfire爲我重新創建它們?我是否冒這樣做冒險?

Hangfire.State使用整個Azure Basic數據庫2GB的空間。 enter image description here

回答

9

我最終刪除了表格,起初查詢根本不起作用,它只是繼續前進而什麼也沒有發生。然後我使用了TRUNCATE TABLE [HangFire].[State],這一切都像一個魅力後。下面是我用Hangfire 1.5.6UseSqlServerStorage腳本:

GO 
PRINT N'Dropping [HangFire].[FK_HangFire_State_Job]...'; 


GO 
ALTER TABLE [HangFire].[State] DROP CONSTRAINT [FK_HangFire_State_Job]; 


GO 
PRINT N'Dropping [HangFire].[FK_HangFire_JobParameter_Job]...'; 


GO 
ALTER TABLE [HangFire].[JobParameter] DROP CONSTRAINT [FK_HangFire_JobParameter_Job]; 


GO 
PRINT N'Dropping [HangFire].[Schema]...'; 


GO 
DROP TABLE [HangFire].[Schema]; 


GO 
PRINT N'Dropping [HangFire].[Job]...'; 


GO 
DROP TABLE [HangFire].[Job]; 


GO 
PRINT N'Dropping [HangFire].[State]...'; 


GO 
DROP TABLE [HangFire].[State]; 


GO 
PRINT N'Dropping [HangFire].[JobParameter]...'; 


GO 
DROP TABLE [HangFire].[JobParameter]; 


GO 
PRINT N'Dropping [HangFire].[JobQueue]...'; 


GO 
DROP TABLE [HangFire].[JobQueue]; 


GO 
PRINT N'Dropping [HangFire].[Server]...'; 


GO 
DROP TABLE [HangFire].[Server]; 


GO 
PRINT N'Dropping [HangFire].[List]...'; 


GO 
DROP TABLE [HangFire].[List]; 


GO 
PRINT N'Dropping [HangFire].[Set]...'; 


GO 
DROP TABLE [HangFire].[Set]; 


GO 
PRINT N'Dropping [HangFire].[Counter]...'; 


GO 
DROP TABLE [HangFire].[Counter]; 


GO 
PRINT N'Dropping [HangFire].[Hash]...'; 


GO 
DROP TABLE [HangFire].[Hash]; 


GO 
PRINT N'Dropping [HangFire].[AggregatedCounter]...'; 


GO 
DROP TABLE [HangFire].[AggregatedCounter]; 


GO 
PRINT N'Dropping [HangFire]...'; 


GO 
DROP SCHEMA [HangFire]; 


GO 
PRINT N'Update complete.'; 


GO 
+1

但不要忘了他們下探後再次添加外鍵。順便說一句,最好更新到最新的[1.6.5](https://www.nuget.org/packages/Hangfire/),自從你的版本爲Hangfire.Core和Hangfire以來,有很多修正。 SqlServer不要面對這樣的問題。 – odinserj