Hangfire.SqlServer 1.7.24

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

There is a newer prerelease version of this package available.
See the version list below for details.
Install-Package Hangfire.SqlServer -Version 1.7.24
dotnet add package Hangfire.SqlServer --version 1.7.24
<PackageReference Include="Hangfire.SqlServer" Version="1.7.24" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Hangfire.SqlServer --version 1.7.24
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Hangfire.SqlServer, 1.7.24"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Hangfire.SqlServer as a Cake Addin
#addin nuget:?package=Hangfire.SqlServer&version=1.7.24

// Install Hangfire.SqlServer as a Cake Tool
#tool nuget:?package=Hangfire.SqlServer&version=1.7.24
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

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.24
• Changed – Don't use the `readcommittedlock` table hint when not required.
• Project – Stop using `TransactionScope` class in tests, re-create database instead.
• Project – Make it possible to run SQL Server tests on Mono on Linux.

1.7.23
• Fixed – `NotImplementedException` in `Transaction.EnlistPromotableSinglePhase` when running on Mono.

1.7.21
• Fixed – Ensure connection is released when exception is thrown when during lock release.
• Fixed – "A network-related or instance-specific error" when using `DisableConcurrentExecution` for long-running jobs.

1.7.20

Please see https://www.hangfire.io/blog/2021/03/19/hangfire-1.7.20.html for details, manual changes
required for those who already migrated to Schema 6 and 7. This problem will be also fixed in a new
migration in Hangfire 1.8.0.

• Fixed – `Schema 6` migration now fixes problem that prevents 2,147,483,648th job from being enqueued.

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.

NuGet packages (72)

Showing the top 5 NuGet packages that depend on Hangfire.SqlServer:

Package Downloads
Hangfire
An easy and reliable way to perform fire-and-forget, delayed and recurring, long-running, short-running, CPU or I/O intensive tasks inside ASP.NET applications. No Windows Service / Task Scheduler required. Even ASP.NET is not required. Backed by Redis, SQL Server, SQL Azure or MSMQ. This is a .NET alternative to Sidekiq, Resque and Celery. https://www.hangfire.io/
Hangfire.SqlServer.MSMQ
MSMQ queues support for SQL Server job storage implementation for Hangfire (background job system for ASP.NET applications).
Naos.MessageBus.Hangfire.Sender
Created on 2021-03-03 23:41
Naos.MessageBus.Hangfire.Harness
Created on 2021-03-03 23:41
HangFire.Azure.ServiceBusQueue
Azure ServiceBus Queue support for SQL Server job storage implementation

GitHub repositories (16)

Showing the top 5 popular GitHub repositories that depend on Hangfire.SqlServer:

Repository Stars
abpframework/abp
Open Source Web Application Framework for ASP.NET Core
simplcommerce/SimplCommerce
A simple, cross platform, modularized ecommerce system built on .NET Core
eventflow/EventFlow
Async/await first CQRS+ES and DDD framework for .NET
VirtoCommerce/vc-platform
VirtoCommerce Platform repository
HTBox/allReady
This repo contains the code for allReady, an open-source solution focused on increasing awareness, efficiency and impact of preparedness campaigns as they are delivered by humanitarian and disaster response organizations in local communities.

Version History

Version Downloads Last updated
1.8.0-beta3 322 7/5/2021
1.8.0-beta2 3,277 4/15/2021
1.8.0-beta1 1,844 3/19/2021
1.7.24 52,151 6/28/2021
1.7.23 132,583 5/28/2021
1.7.22 320,215 4/13/2021
1.7.21 6,724 4/12/2021
1.7.20 168,787 3/19/2021
1.7.19 728,870 1/15/2021
1.7.18 550,959 11/20/2020
1.7.17 426,787 10/20/2020
1.7.16 84,093 10/14/2020
1.7.15 86,273 10/8/2020
1.7.14 153,872 9/24/2020
1.7.13 131,417 9/15/2020
1.7.12 660,849 7/24/2020
1.7.11 1,779,871 4/15/2020
1.7.10 217,447 4/2/2020
1.7.9 1,405,442 1/20/2020
1.7.8 678,413 12/5/2019
1.7.7 704,097 10/22/2019
1.7.6 1,255,132 8/5/2019
1.7.5 271,026 7/18/2019
1.7.4 317,699 6/28/2019
1.7.3 551,646 5/23/2019
1.7.2 355,523 4/29/2019
1.7.1 199,250 4/16/2019
1.7.0 285,606 3/29/2019
1.6.30 356 4/29/2021
1.6.29 13,016 4/15/2020
1.6.28 38,464 1/14/2020
1.6.27 51,203 6/27/2019
1.6.26 73,631 5/23/2019
1.6.25 9,426 4/9/2019
1.6.24 23,324 3/27/2019
1.6.23 209,007 3/13/2019
1.6.22 690,916 1/25/2019
1.6.21 905,744 11/1/2018
1.6.20 970,738 7/31/2018
1.6.19 1,220,544 4/6/2018
1.6.18 16,973 4/5/2018
1.6.17 1,475,145 9/19/2017
1.6.16 137,903 9/2/2017
1.6.15 208,732 8/8/2017
1.6.14 268,501 6/16/2017
1.6.13 59,419 6/7/2017
1.6.12 523,768 3/22/2017
1.6.11 33,857 3/14/2017
1.6.10 12,935 3/13/2017
1.6.9 44,183 3/2/2017
1.6.8 305,648 12/21/2016
1.6.7 138,844 11/25/2016
1.6.6 166,033 10/13/2016
1.6.5 107,834 9/24/2016
1.6.4 90,691 8/30/2016
1.6.3 37,620 8/19/2016
1.6.2 57,464 8/5/2016
1.6.1 37,646 7/27/2016
1.6.0 29,670 7/15/2016
1.5.9 110,382 7/11/2016
1.5.8 37,620 6/17/2016
1.5.7 25,654 5/30/2016
1.5.6 66,323 4/22/2016
1.5.5 16,182 4/14/2016
1.5.4 47,555 3/22/2016
1.5.3 270,976 11/6/2015
1.5.2 26,576 10/15/2015
1.5.1 2,605 10/14/2015
1.5.0 42,950 10/1/2015
1.4.7 2,215 10/1/2015
1.4.6 29,512 8/29/2015
1.4.5 33,497 7/24/2015
1.4.4 1,533 7/23/2015
1.4.3 52,959 5/27/2015
1.4.2 10,605 5/6/2015
1.4.1 19,940 4/14/2015
1.3.4 52,613 2/4/2015
1.3.3 2,983 1/28/2015
1.3.2 1,552 1/27/2015
1.3.1 6,925 1/13/2015
1.3.0 7,206 12/10/2014
1.2.2 14,420 11/24/2014
1.2.1 1,263 11/22/2014
1.2.0 4,428 11/17/2014
1.1.1 15,937 9/5/2014
1.1.0 2,284 9/3/2014
1.0.2 5,249 7/1/2014
1.0.1 1,200 6/30/2014
1.0.0 1,303 6/30/2014
0.9.1 2,363 6/12/2014
0.9.0 1,107 6/7/2014
0.8.3 1,148 5/23/2014
0.8.2 1,103 5/21/2014
0.8.1 2,054 5/17/2014
0.8.0 2,046 5/2/2014
0.7.5 1,040 4/10/2014
0.7.4 908 4/7/2014
0.7.3 923 4/4/2014
0.7.1 924 4/1/2014
0.7.0 2,286 3/22/2014