Hangfire.SqlServer 1.7.20

SQL Server 2008+ (including Express), SQL Server LocalDB and SQL Azure storage support for Hangfire (background job system for ASP.NET applications).

No packages depend on Hangfire.SqlServer.

https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.7.html to learn how to upgrade from 1.6.X. 1.7.19 • Fixed – Return `null` instead of throwing FormatException when job id can't be parsed. • Project – Run the entire Hangfire.SqlServer test suite against the new Microsoft.Data.SqlClient package. 1.7.18 • Added – `SqlServerStorageOptions.DeleteExpiredBatchSize` option to remove more expired records in a single pass. • Fixed – Don't throw from `SqlServerStorage.ToString` method when using custom factory or existing connection. 1.7.17 • Fixed – SqlException "Incorrect syntax near 'throw'" after upgrading to 1.7.15 when using SQL Server 2008 or 2008R2. 1.7.16 • Fixed – Blocking problems when using multiple storages with the same queue names in the same process (appeared in 1.7.9). 1.7.15 • Fixed – Avoid deadlocks when using the `SetJobParameter` method without introducing issues for older schemas. • Fixed – Remove duplicate sorting in the `SqlServerMonitoringApi.GetJobs` method which is used by a lot of queries. 1.7.14 • Fixed – Duplicate entries in the `JobParameters` table after upgrading to version 1.7.13. • Fixed – Extensive retries on a method that has a retry attribute after upgrading to 1.7.13. • Fixed – "ArgumentException: An item with the same key has already been added. Key: RetryCount" in `SqlServerMonitoringApi`. 1.7.13 • Added – `UseIgnoreDupKeyOption` for SQL Server storage configuration (changes to [Set] and [Hash] tables required). • Fixed – Don't truncate too long keys silently, throw exceptions instead. • Fixed – Add missing null checks for methods in the `SqlServerWriteOnlyTransaction` class. • Fixed – Change `holdlock` hint to `xlock` in `merge` statements in transaction to prevent deadlocks. • Fixed – Don't rethrow "Lock request time out period exceeded" exceptions from expiration manager. • Fixed – Increase [Server].[Id] column's length to 200 for new installations. 1.7.10 • Changed – Use `XACT_ABORT` option for `ExpirationManager` queries. • Changed – Don't rely on implicit rollback when disposing transactions. • Fixed – `NullReferenceException` in logs thrown from `SqlInternalTransaction.Rollback` method. 1.7.9 • Changed – Implement long polling fetch for sub-second polling delays without `sp_getapplock`. • Fixed – Don't leak `DbConnection` instance when an exception occurs during its opening. • Fixed – Can not obtain connection from the pool exception after database was offline. • Fixed – High number of waits in SQL Server when Hangfire Servers are idle. 1.7.8 • Added – Support for Microsoft.Data.SqlClient package when using a custom connection factory (Part II). • Fixed – Remove `System.Data.SqlClient` dependency from `SqlCommandBatch` and `ExpirationManager`. 1.7.7 • Added – Add support for Microsoft.Data.SqlClient package when using custom connection factory (Part I). • Added – Add `UseFineGrainedLocks` option to avoid deadlocks in some theoretical cases. • Added – Add missing overload for `UseSqlServerStorage` with connection factory parameter only. • Added – Expose the SqlServerObjectsInstaller.GetInstallScript method (by @altso). • Fixed – Make command batching working on .NET Core when using System.Data.SqlClient 4.7.0 and higher. • Fixed – Permit dash characters (`-`) in schema names (by @kendaleiv). • Fixed – Escape square bracket characters in schema names. • Project – Add support for `netcoreapp3.0` target in Hangfire.SqlServer.Tests. • Project – Take schema name from constant in Hangfire.SqlServer.Tests (by @kendaleiv). • Project – Make Hangfire.SqlServer.Tests work on Linux in Travis CI environment. 1.7.4 • Fixed – Potential deadlocks cause by suboptimal queries when using `SlidingInvisibilityTimeout` fetching. • Fixed – Prevent zero delays between fetch retry attempts when lock acquisition failed without blocking. • Fixed – Specify float precision explicitly for the `Score` column in the `AddToSet` method. 1.7.3 • Fixed – Wrong error message in migration script, when @CurrentSchemaVersion has a NULL value (by @penenkel). 1.7.2 • Fixed – Occasional "DataException: Error parsing column" error when using blocking fetch. 1.7.1 • Changed – Use blocking fetch implementation only for sub-second polling intervals. • Fixed – Don't fail with an exception when can't connect to MSSQL instance during start-up. • Fixed – Don't access the `JobQueue` table when using blocking query and don't have results. 1.7.0 • Added – Full .NET Core 2.0 support by explicitly targeting .NET Standard 2.0. • Added – `Schema 7` migration to fix the `IX_HangFire_Set_Score` index to include the `Key` column. • Added – `Schema 6` migration with less indexes, better physical layout and `bigint` support (disabled by default). • Added – Blocking fetch support for sliding expiration-based fetch to avoid excessive polling. • Added – `SqlServerStorageOptions.EnableHeavyMigrations` switch to automatically install even heavy migrations. • Added – `SqlServerStorageOptions.DisableGlobalLocks` property to avoid custom locking scheme. • Added – `SqlServerStorageOptions.UsePageLocksOnDequeue` property to use less CPU consuming fetch. • Added – Callback method to allow to open the database with impersonation (by @BjoernHund). • Added – `SqlServerStorageOptions.UseRecommendedIsolationLevel` option to set the minimum possible level. • Changed – Identity columns either converted to the `bigint` type, or entirely removed. • Changed – Clustered indexes were organized according to the access patterns of their tables. • Changed – Most of secondary indexes were either removed or made filtered. • Changed – Optimize sliding-expiration-based fetching to use even less CPU time. • Changed – Use write reordering and fine-grained locking scheme to improve parallelism. • Changed – Monitoring API doesn't check state data to see state transition time. • Changed – Allow to use zero-based poll interval when sliding invisibility timeout. • Changed – Short paths for the `CreateExpiredJob` method to avoid some round-trips. • Changed – Set `SqlParameter` types explicitly to not to duplicate query plans. • Changed – Batch support for `AddToQueue` method when default provider is used. • Changed – Check `FetchedAt` has expected value to prevent prolonging others' work. • Changed – Use more recent Dapper 1.50.7 on all platforms except .NET Framework 4.5. • Changed – Dapper package is internalized now even on .NET Core to avoid possible conflicts. • Fixed – Avoid unnecessary waits in state changer when job was already expired. • Fixed – Cannot resolve the collation conflict in `CountersAggregator`. • Fixed – Background processing stops when identity columns exceed the `Int32.MaxValue`. • Fixed – Slowdown of scheduled jobs due to the missing index on the `[Set]` table.

.NET Framework 4.5

.NET Standard 1.3

.NET Standard 2.0

Version Last updated
1.8.22 12/30/2025
1.8.21 12/30/2025
1.8.20 11/25/2025
1.8.19 1/1/2026
1.8.18 1/2/2026
1.8.17 12/30/2025
1.8.16 12/31/2025
1.8.15 1/1/2026
1.8.14 12/30/2025
1.8.12 12/31/2025
1.8.11 12/31/2025
1.8.10 1/7/2026
1.8.9 1/1/2026
1.8.7 12/30/2025
1.8.6 1/7/2026
1.8.5 12/30/2025
1.8.4 12/30/2025
1.8.3 12/30/2025
1.8.2 1/2/2026
1.8.1 12/31/2025
1.8.0 12/30/2025
1.7.37 12/30/2025
1.7.36 12/31/2025
1.7.35 12/30/2025
1.7.34 12/30/2025
1.7.33 12/31/2025
1.7.32 1/2/2026
1.7.31 12/30/2025
1.7.30 1/1/2026
1.7.29 1/1/2026
1.7.28 12/30/2025
1.7.27 12/31/2025
1.7.26 1/1/2026
1.7.25 12/30/2025
1.7.24 12/30/2025
1.7.23 12/31/2025
1.7.22 1/1/2026
1.7.21 1/2/2026
1.7.20 1/7/2026
1.7.19 1/15/2021
1.7.18 1/2/2026
1.7.17 12/31/2025
1.7.16 12/31/2025
1.7.15 12/31/2025
1.7.14 1/1/2026
1.7.13 1/9/2026
1.7.12 1/1/2026
1.7.11 12/31/2025
1.7.10 1/1/2026
1.7.9 1/2/2026
1.7.8 12/31/2025
1.7.7 12/31/2025
1.7.6 12/30/2025
1.7.5 1/2/2026
1.7.4 12/31/2025
1.7.3 12/31/2025
1.7.2 12/30/2025
1.7.1 1/1/2026
1.7.0 1/1/2026
1.6.30 1/7/2026
1.6.29 12/31/2025
1.6.28 1/14/2020
1.6.27 1/1/2026
1.6.26 1/1/2026
1.6.25 12/31/2025
1.6.24 12/31/2025
1.6.23 12/31/2025
1.6.22 1/25/2019
1.6.21 1/1/2026
1.6.20 12/30/2025
1.6.19 12/31/2025
1.6.18 12/31/2025
1.6.17 12/31/2025
1.6.16 12/31/2025
1.6.15 1/2/2026
1.6.14 1/1/2026
1.6.13 12/31/2025
1.6.12 1/2/2026
1.6.11 1/3/2026
1.6.10 12/31/2025
1.6.9 1/2/2026
1.6.8 1/2/2026
1.6.7 12/30/2025
1.6.6 10/13/2016
1.6.5 1/1/2026
1.6.4 1/8/2026
1.6.3 12/30/2025
1.6.2 12/31/2025
1.6.1 12/30/2025
1.6.0 12/30/2025
1.5.9 1/9/2026
1.5.8 1/1/2026
1.5.7 12/30/2025
1.5.6 1/2/2026
1.5.5 1/1/2026
1.5.4 12/30/2025
1.5.3 12/31/2025
1.5.2 12/30/2025
1.5.1 1/7/2026
1.5.0 12/30/2025
1.4.7 12/31/2025
1.4.6 1/2/2026
1.4.5 12/30/2025
1.4.4 12/30/2025
1.4.3 12/30/2025
1.4.2 1/2/2026
1.4.1 1/2/2026
1.3.4 1/2/2026
1.3.3 12/30/2025
1.3.2 12/30/2025
1.3.1 12/31/2025
1.3.0 12/31/2025
1.2.2 1/1/2026
1.2.1 1/1/2026
1.2.0 12/30/2025
1.1.1 12/30/2025
1.1.0 1/2/2026
1.0.2 12/30/2025
1.0.1 1/2/2026
1.0.0 12/31/2025
0.9.1 1/2/2026
0.9.0 12/30/2025
0.8.3 12/31/2025
0.8.2 12/30/2025
0.8.1 12/30/2025
0.8.0 12/30/2025
0.7.5 1/2/2026
0.7.4 12/31/2025
0.7.3 1/2/2026
0.7.1 1/1/2026
0.7.0 12/31/2025