datetime2 データ型を持たない SQL Server 2005 で Hangfire を実行しようとしているので、このディスカッションは非常に役に立ちました。これで 1 つの問題は解決しましたが、別の問題が発生しました。今、私はエラーが発生します:
SqlMapper.cs が見つかりません。タイプ 'System.Data.SqlClient.SqlException' の例外が System.Data.dll で発生しましたが、ユーザー コードでは処理されませんでした。「merge」付近の構文が正しくありません。
GitHub で SqlMapper.cs のソース コードを見つけました。Dapper.1.38 パッケージは、プロジェクトに追加したパッケージです。それでも、モジュールをビルドしたときとはソースファイルが違うというメッセージが表示されます。
とにかくデバッグを行い、例外の原因となっている SQL コマンドを見つけることができました。これです:
merge HangFire.Server as Target
using (VALUES (@id, @data, @heartbeat)) as Source (Id, Data, Heartbeat)
on Target.Id = Source.Id
when matched then
update set Data = Source.Data, LastHeartbeat = Source.Heartbeat
when not matched then
insert (Id, Data, LastHeartbeat) values (Source.Id, Source.Data, Source.Heartbeat);
マージ コマンドの構文は SQL Server 2005 と互換性がない可能性がありますが、例外の理由を特定できませんでした。VALUES 句が疑われます。どんな助けでも大歓迎です。