使用Hangfire时出现SQL Server错误

Dre*_*mer 8 asp.net-mvc-5 hangfire

说明:我在ASP.NET MVC5应用程序中使用Hangfire发送电子邮件.到目前为止,它工作正常,但现在当我运行应用程序时,它抛出了这个错误:

数据库中已经有一个名为"Job"的对象.安装Hangfire SQL对象...数据库模式[HangFire]已经存在表[HangFire].[Schema]已经存在..安装模式版本1

从这个错误,我明白Hangfire试图在数据库中创建已经存在的所有那些表.但是我没有理由支持它,因为到目前为止应用程序工作正常,即使我在本地运行很多次.

请帮助解决此错误.

小智 7

这发生在我身上,我运行此查询并重新启动服务器。只需运行查询:

INSERT INTO [HangFire].[Schema]
           ([Version])
     VALUES
           (5)
Run Code Online (Sandbox Code Playgroud)


Ros*_*sim 5

这发生在我身上时,SQL数据库用户没有在数据库中适当的权限(db_datareaderdb_ddladmindb_datawriter等)。

添加适当的权限立即解决它。


Lia*_*han 5

我在通过 .bacpac 导出\导入数据库后遇到了这个问题,但出现错误。我删除了开发数据库上的所有 hangfire 表并且它起作用了(小心,不要在生产数据库上这样做)。

DROP TABLE IF EXISTS HangFire.AggregatedCounter
DROP TABLE IF EXISTS HangFire.Counter
DROP TABLE IF EXISTS HangFire.Hash
DROP TABLE IF EXISTS HangFire.JobParameter
DROP TABLE IF EXISTS HangFire.JobQueue
DROP TABLE IF EXISTS HangFire.List
DROP TABLE IF EXISTS HangFire.[Schema]
DROP TABLE IF EXISTS HangFire.Server
DROP TABLE IF EXISTS HangFire.[Set]
DROP Table IF EXISTS HangFire.State
DROP TABLE IF EXISTS HangFire.Job
Run Code Online (Sandbox Code Playgroud)


Ami*_*lle 5

我的问题通过 Asp Core 2.2 中的以下代码解决:

启动类-->ConfigureServices方法:

  var cfg = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();

        services.AddHangfire(x => x
            .UseSqlServerStorage(
                cfg.GetConnectionString("DefaultConnection"),
                new SqlServerStorageOptions
                {
                    PrepareSchemaIfNecessary = false
                }
            ));
Run Code Online (Sandbox Code Playgroud)

appsetting.json 文件:

 "ConnectionStrings": {
    "DefaultConnection": "Data Source=.;Initial Catalog=databaseName;Persist Security Info=True;User ID=sa;Password=123;MultipleActiveResultSets=True;Application Name=Hang-fire"
  },
Run Code Online (Sandbox Code Playgroud)