2011-12-22 49 views
5

當我在SQL Server Management Studio中右鍵單擊一個表並選擇'編輯最高200行'時,在什麼時候,如果有的話,我正在查看的數據會被鎖定?在SQL Server Management Studio 2008中編輯數據行時是否鎖定了數據行?

我的一位同事表示,當以這種方式查看數據時,數據行可以被鎖定(我認爲當他說如果你把光標放在一行上並開始編輯數據)。

這是唯一一次在這種情況下可以鎖定數據嗎?

回答

5

這是不正確的。運行在一個窗口這個腳本(並保持運行狀態):

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表並開始編輯其中的單行。觀察腳本繼續執行更新。

+0

感謝Damien和gbn提供的答案。我想將這兩個標記標記爲已接受。由於提供了SQL腳本,我將接受Damien's,這可以幫助我證明在編輯數據時SSMS中會發生什麼。但同樣感謝你們兩個。 – 2011-12-22 11:01:12

2

默認情況下,SSMS GUI編輯器中的數據不會被鎖定。

如果您進行了更改並嘗試保存,您將收到錯誤/警告ato覆蓋/丟棄等。我現在無法測試以查看確切的消息,對不起。

+0

看來,一些錯誤/警告對話框實際上可能會導致鎖 - 我在一個新的答案中詳細說明了這一點。 – TTT 2014-02-23 19:37:52

1

它可以被鎖定。在編輯面板中,嘗試插入一行並違反主鍵約束。你會得到一個錯誤的對話框彈出消息。當您閱讀該消息時,表格現在將被鎖定。如果你沒有確認消息而走開,那張表將被無限期鎖定。我剛剛用SSMS 2008R2和SSMS 2012證實了這一點。

+0

這有點嚇人。幸運的是,我們的團隊中沒有任何人可以讓對話開放! (我希望:))謝謝你去努力去證明這一點。非常感激。 – 2014-02-24 08:49:05

相關問題