1

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 句が疑われます。どんな助けでも大歓迎です。

4

0 に答える 0