SQL Server Management Studio でテーブルを右クリックして [上位 200 行の編集] を選択すると、表示しているデータがロックされるのはどの時点ですか?
私の同僚は、この方法でデータを表示すると、データ行をロックできると述べました (行にカーソルを置いてデータの編集を開始すると彼が言ったときだと思います)。
このコンテキストでデータをロックできるのはこれだけですか?
SQL Server Management Studio でテーブルを右クリックして [上位 200 行の編集] を選択すると、表示しているデータがロックされるのはどの時点ですか?
私の同僚は、この方法でデータを表示すると、データ行をロックできると述べました (行にカーソルを置いてデータの編集を開始すると彼が言ったときだと思います)。
このコンテキストでデータをロックできるのはこれだけですか?
それは真実ではない。このスクリプトを 1 つのウィンドウで実行します (実行したままにします)。
create table Tx (
ID int not null,
Val1 varchar(20) not null
)
go
insert into Tx (ID,Val1)
select 1,'abc'
go
set nocount on
while 1=1
begin
update Tx set Val1 = CASE WHEN Val1='abc' then 'def' else 'abc' end
RAISERROR('Updated',10,1) WITH NOWAIT
WAITFOR DELAY '00:00:05'
end
5 秒ごとに、Val1
列の値が反転しUpdated
、[メッセージ] タブに出力されます (「グリッド内の結果」に設定されていると仮定します)。
次に、SSMS の別のインスタンスでTx
テーブルを開き、そこにある 1 行の編集を開始します。スクリプトが更新を実行し続けることを確認します。
SSMS GUI エディターでは、既定ではデータはロックされません。
変更を加えて保存しようとすると、上書き/破棄などのエラー/警告が表示されます。正確なメッセージを確認するために今すぐテストすることはできません。申し訳ありません。