問題タブ [sqltransaction]
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.
sql - BEGIN/END TRANSACTION 内でストアド プロシージャを実行する
SQL でストアド プロシージャを作成し、それを ( EXEC spStoredProcedure
) BEGIN/END TRANSACTION 内で呼び出した場合、この他のストアド プロシージャもトランザクションに含まれますか?
C# の try/catch のように機能するかどうかはわかりませんでした。
c# - SqlTransaction で using ステートメントを使用する理由
コードで使用している SqlTransaction に関するいくつかの問題が発生しています。グーグルで調べていると、多くの人が SqlTransaction で using ステートメントを使用しているのを目にします。
このタイプのステートメントを SqlTransaction で使用する利点や違いは何ですか?
現在、私のコードは次のようになっています。
ある方法が他の方法よりも優れている点は何ですか?
sql-server - バッチ処理された nvarchar(max) 更新のトランザクション ログの増加を減らす方法
このアプリでは、大量のテキストを SQL Server 2005 データベースに追加する必要があります (1 つのレコードで最大 1 GB)。パフォーマンス上の理由から、これはチャンクごとにストアド プロシージャ コールを行うことによってチャンクで行われます (たとえば、usp_AddChunk)。usp_AddChunk には明示的なトランザクションはありません。
私が見ているのは、チャンク サイズを 100MB から 10MB に減らすと、トランザクション ログが非常に大きくなるということです。これは、usp_AddChunk が呼び出されるたびに、"暗黙的" (私の用語) トランザクションが既存のテキストをすべてログに記録するためだと言われています。したがって、150MB のレコードの場合:
100MB のチャンク サイズ: 100 (0 バイトのログ) + 50 (100 MB のログ) = 100 MB のログ
よりも小さくなる
10 MB のチャンク サイズ: 10 (0 バイトのログ) + 10 (10 MB のログ) + 10 (20 MB のログ) ... + 10 (140 MB のログ) = 1050 MB のログ
C# コードで (最初のチャンクを追加する前に、最後のチャンクの後にコミットする前に) トランザクションを開くことで、この「暗黙の」トランザクションは発生せず、巨大なログ ファイルを回避できると考えました。しかし、私のテストでは、ADO.NET トランザクションを使用すると、トランザクション ログが 5 倍大きくなることがわかりました。
コードは掲載しませんが、詳細は次のとおりです。
- SqlConnection.BeginTransaction() を呼び出します
- チャンクごとに異なる SqlCommand を使用します
- (1) の SqlTransaction を各 SqlCommand に割り当てます
- 通常、SqlCommand を実行するたびに接続を閉じますが、同じ結果で接続を閉じないようにしました
このスキームの欠陥は何ですか?さらに情報が必要な場合はお知らせください。ありがとう!
注: シンプルまたは一括ログ復旧モデルの使用はオプションではありません
sqlconnection - 行を挿入/更新する CommandBuilder および SqlTransaction
これを機能させることはできますが、適切に行っていないように感じます。
これを初めて実行すると、意図したとおりに機能し、「thisField」に「doesntExist」が含まれる場所に新しい行が挿入されます
ただし、後で実行すると、主キー「thisField」に違反しているため、重複キーを挿入できないという実行時エラーが発生します。
AcceptChanges を移動したり、Begin/EndEdit 内で変更をカプセル化したりする試行錯誤を通じてそれを機能させることができたとしても、「同時実行違反」が発生し始め、変更が更新されず、失敗したことがわかります。影響を受ける 1 行の 0 行を更新します。
私が見逃している明らかなものはありますか?
c# - 単一のsqlconnectionでの複数のsqltransactions
次のように実行したいコードがあります。しかし、2回目の反復で、「このSqlTransactionが完了しました。使用できなくなりました」という例外が発生し続けます。誰かが私がここで間違っていることを指摘するのを手伝ってもらえますか?ありがとう!
c# - これらの呼び出しをSqlTransactionに入れる方法は?
ASP.NET4.0アプリケーション用のすべてのデータアクセスコードを含むクラスがあります。クラスには、データベースにデータを挿入する2つのメソッドがあります。これらの挿入をSqlTransactionに参加させ、挿入の1つが失敗した場合にトランザクションをロールバックしたいと思います。ただし、コーディング方法が原因で、その方法がわかりません。これが私のデータアクセスコードです:
次のように、ASP.NETページからそのコードにアクセスしています。
私がやりたいのは、ASP.NETページからの呼び出しをSqlTransactionでラップすることです。これを行うための最良の方法は何ですか?コードをいくらかリファクタリングする必要がありますか?
どうもありがとう。
.net - SQLTransactionはいつ使用する必要がありますか
SQLTransactionを使用する適切な時期はいつですか?
私はそれらをすべてのINSERT、UPDATE、およびDELETEステートメントに使用します。
これは正しい使用法ですか、それとも私は少しやり過ぎですか?
c# - Dotnet トランザクションがロールバックされたかどうかを確認する方法は?
dotnet トランザクションが閉じられているかどうかを確認するにはどうすればよいですか?
sql-server - SQL SERVER - MIN(テキスト) の仕組みを理解する
私は少し掘り下げて、SQL サーバーがどのように評価するかについての説明を探していますMIN(Varchar)
。
BOL でこの発言を見つけました: MIN は、基になるデータベースで定義された照合順序で最小値を見つけます
したがって、次の値を持つ行が 1 つあるテーブルがあるとします。
を実行するSELECT MIN(DATA)
と AA が返されます。この背後にある理由を理解し、BOL をもう少しよく理解したいだけです。
ありがとう!
sql - SQLログとアクティブトランザクション
シミュレートされたSQL2005dbを実行しているSQL2008を備えたWebサーバーがあり、テスト環境用のローカルSQL2005dbがあります。
これにより、2008サーバーのバックアップは2005サーバーに復元されないため、テスト用のデータのバックアップ/復元にスクリプトを使用します。
このSQLクエリを実行して、運用Web SQL Server(2008)のテーブルのサイズを縮小すると
このメッセージが表示されます:
スクリプトを公開するときにも出てきます。
このSQLコマンドを実行すると、次の結果が得られます。
結果:
これが私の質問と問題です:
- わかりました。ロールバックコマンドが必要なトランザクションステートメントがあります。
<if @@ Trancount>0ロールバック>..しかし、100個のストアドプロシージャがあるので、それを行う前に...。
その間に...どうすればこの問題を根絶できますか?SHRINKINGを試し、Dbのバックアップを試しました...
ご覧のとおり、SIMPLEモードです... LOG ONLYファイルをバックアップする方法がわかりません...(その方法がわかりません)...