次のステートメントはアトミック操作ですか?
UPDATE [table1]
SET column1=@val1, column2.WRITE(@val2, NULL, 0) WHERE table1_id=@id
または、エラーが発生した場合に列がまったく更新されないか、または両方が更新されるように、トランザクション内に配置する必要がありますか?
列は次のように定義されます。
column1 int not null,
column2 varbinary(max) not null
次のステートメントはアトミック操作ですか?
UPDATE [table1]
SET column1=@val1, column2.WRITE(@val2, NULL, 0) WHERE table1_id=@id
または、エラーが発生した場合に列がまったく更新されないか、または両方が更新されるように、トランザクション内に配置する必要がありますか?
列は次のように定義されます。
column1 int not null,
column2 varbinary(max) not null
一言です。SQL Server では、各ステートメントが暗黙のトランザクションを実行します。詳細が必要な場合は、別の回答があります。
Autocommit Transactionsに関する MSDN リファレンスには、次のように記載されています。
自動コミット モードは、SQL Server データベース エンジンの既定のトランザクション管理モードです。すべての Transact-SQL ステートメントは、完了するとコミットまたはロールバックされます。ステートメントが正常に完了すると、コミットされます。エラーが発生すると、ロールバックされます。
UPDATE .WRITE を使用して ADO.NET で大きな値 (最大) のデータを変更することは、UPDATE ステートメント トランザクションに影響を与えることが文書化されていません。