問題タブ [rowversion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3000 参照

entity-framework - EntityFrameworkでの行バージョンの比較

rowversionEntity Frameworkを使用してフィールドを比較するにはどうすればよいですか?列を持つテーブルが1つrowversionあり、行バージョンが指定された値よりも高いテーブルからデータを取得したいと思います。

この行は機能せず、エラーがスローされます。

演算子「>」は、タイプ「byte[]」および「byte[]」のオペランドには適用できません。

rowversionC#/ Entity Frameworkのフィールドを比較する方法はありますか?

0 投票する
1 に答える
1918 参照

sql-server - SQL サーバーの ROWVERSION 定義は正確ではありませんか?

msdnから

各データベースには、データベース内の rowversion 列を含むテーブルに対して実行される挿入操作または更新操作ごとにインクリメントされるカウンターがあります。

また

データベースの現在の rowversion 値を返すには、@@DBTS を使用します。

私はデータベースを持っています(テーブルが1つしかなく、タイムスタンプ/行バージョンフィールドがないと信じています)

ここに画像の説明を入力

しかし、select @@DBTS を実行すると、rowversion 列があるかのような結果が得られます。

ここに画像の説明を入力

(ps - 挿入/更新 - この値は更新されません) .

  • この値は何ですか?

  • rowversion column を持たないのはなぜですか?

0 投票する
1 に答える
163 参照

entity-framework - Entity Framework の同時実行性を備えたクリーンなドメイン モデル なぜ RowVersion を使用しなければならないのですか?

こんにちは、素敵できれいなドメイン モデルがあります。そのような:

Entity Framework では、同時実行性を提供するために、RowVersion プロパティを使用してドメイン モデルを汚染する必要があるのはなぜですか?

私のモデルはこれを知りたくない、または知る必要がないのに、なぜ強制的に使用する必要があるのでしょうか? 並行性チェックを実行する別の方法はありますか? もしそうなら、それは行バージョンを追加するよりも良い/悪いですか、それとも速い/遅いですか? または、ドメイン モデルにない別の場所に RowVersion を追加できますか。流暢なAPIでEF 4.1を使用しています。

ありがとう

0 投票する
1 に答える
1115 参照

sql-server - ServiceStackOrmliteおよびRowVersionのサポート

更新中にSQLサーバーの行バージョンをサポートする最も簡単な方法は何ですか?

私はこれを試しました:

しかし、バージョンを比較するため、それは惨めに失敗しますVarchar(8000)

まったく同じではありませんが、ServiceStackとOrmLiteの質問です。

関連するエンティティの説明を熱心にロードするための最良の方法は何ですか?私はこれを見ましJoinたが、チェンジセットがチェックインされていることに気づきましたか?これにより、POCOクラスには、外部キーごとに追加の「無視された」説明が含まれるようになりました。

0 投票する
1 に答える
744 参照

tsql - 「rowversion」を主キー列として使用する

私は SQL Server 2012 を使用しており、「変更」テーブルを作成したいと考えています。2 番目のテーブル列の値が変更されると、他のテーブルからのデータが入力されます。

変更がいつ行われたかを追跡するために、「変更」テーブル「datatime2」および「rowversion」列に追加しています。

「rowversion」を主キーとして使用しても問題ありませんか?

ここで、現在の行が更新された場合に変更されることを読みました。そのため、外部キーを無効にする「主キー」の良い候補ではありません。

とにかく、それが外部キーとして使用されず、「変更」テーブルの行が更新されない場合 (新しい行のみが挿入されます)、「rowversion」を PK として使用しても問題ありませんか、追加の列を使用する必要があります?

0 投票する
2 に答える
3234 参照

tsql - T-SQLの「timestamp」が「rowversion」データ型の列を上書きします

私はMiscrosoftSQLServer 2012を使用していますが、この記事では次のように述べられています。

タイムスタンプ構文は非推奨になりました。この機能は、MicrosoftSQLServerの将来のバージョンで削除される予定です。新しい開発作業でこの機能を使用することは避け、現在この機能を使用しているアプリケーションを変更することを計画してください。

「timestamp」列の代わりに「rowversion」列を使用することにしました。そこで、次のテーブルを作成しました。

そして、テーブルに関する情報(列の詳細など)を表示する「ALT + F1」の組み合わせを押して、「RowVersionID」列が「timestamp」タイプでマークされていることを確認するまで、すべてが順調に見えていました。

次に私が行ったのは、SQL Server Management Studio 2012を使用して「テーブルを削除して作成」することでした。「生成されたSQL」は、元のクエリを次のように変更します。

サーバーが最初に設定したタイプを使用していないのはなぜですか。また、記事で「タイムスタンプ」を使用しないようにアドバイスされているのに、サーバーがそれを選択しているのはなぜですか。

0 投票する
0 に答える
177 参照

c# - 更新後にRowVersionを取得する

行バージョンでEntityFramework4を使用しています。行を更新してから、新しい行バージョンを受け取りたい。

DBの行に再アクセスせずにそれを行うことはできますか?

0 投票する
1 に答える
1775 参照

sql - SQL MIN_ACTIVE_ROWVERSION()の値は長期間変更されません

リンクされたサーバー接続を介して、別々のサーバー(SQL Server 2008 Enterprise64ビットSP2-10.0.4000.0の両方)にある2つのSQLServerデータベース間の一種の同期フレームワークのトラブルシューティングを行っています。スタックの。

「同期が保留されている」レコードを識別するロジックは、もちろん、ダーティリードを回避するためROWVERSIONの使用を含め、値に基づいています。MIN_ACTIVE_ROWVERSION()

すべてのSELECT操作は、各「ソース」側のSPにカプセル化されます。これは、1つのSPの概略サンプルです。

このアプローチは問題なく機能します。通常、予想される速度600k /時間(30秒ごとのジョブ、バッチサイズ= 5k)でレコードを同期しますが、ある時点で、同期プロセスで転送する単一のレコードが検出されません。パラメータROWVERSIONより大きい値を持つレコードが数千あり@LastStampます。

理由を確認すると、MIN_ACTIVE_ROWVERSION()の値が検索対象よりも小さい(またはわずかに大きい、わずか5または10の増分)ことがわかりました@LastStamp。もちろん、これは問題にはならないはずです。なぜなら、このMIN_ACTIVE_ROWVERSION()アプローチは、ダーティな読み取りや事後の問題を回避するために導入されたからです

上記のシナリオで発生する場合がある問題は、の値がMIN_ACTIVE_ROWVERSION()30/40分、場合によっては1時間以上などの長い(非常に長い)期間中に変化しないことです。そして、この値は値よりはるかに小さい@@DBTSです。

これは、まだコミットされていない保留中のDBトランザクションに関連していると最初に考えました。MIN_ACTIVE_ROWVERSION()リンク)に関するMSDNの定義によると:

現在のデータベースで最も低いアクティブなrowversion値を返します。行バージョン値は、まだコミットされていないトランザクションで使用されている場合にアクティブになります

しかし、この問題の期間中にセッション(sys.sysprocesses)をチェックすると、待機時間が数秒を超えるopen_tran > 0セッションは見つかりませんでした。+/-5分の待機時間セッションが1回または2回発生しただけです。

そのため、この時点で状況を理解するのに苦労しています。MIN_ACTIVE_ROWVERSION()長期間にわたって変化することはなく、この時間枠内で待機時間が長いコミットされていないトランザクションは見つかりません。

私はDBAではないので、この問題を分析するための画像が欠落している可能性があります。フォーラムやブログで調査を行っても、他の手がかりは見つかりませんでした。これまでのところ、open_tran> 0が正当な理由でしたが、私が公開した状況では、他に何かがあることは明らかであり、その理由はわかりません。

フィードバックをいただければ幸いです。

0 投票する
1 に答える
346 参照

c# - NHibernate での行のバージョン管理

私はソーシャル アプリを開発しています。これは、ユーザーがメッセージ (FB など) の壁を作成し、友達を招待できるようにするものです。DB に壁とそのバージョン (TimeStamp) を含むテーブルがあります。つまり、最終更新時刻です。

誰かが壁を更新すると、バージョンが更新されるので、ユーザーにこのバージョンを受け取ってもらいたいです。私は NHibernate を使用しており、バージョンの行をバージョンの型に定義しましたが、同時実行の問題を防ぐために、行を更新し、新しいバージョンを 1 つのアトミック アクションで受け取る方法が見つかりませんでした。

これを行う方法はありますか?この問題を解決するより良い方法はありますか?