Sql server 2008 在SQL Server Management Studio 2008中编辑数据行时是否锁定?

Sql server 2008 在SQL Server Management Studio 2008中编辑数据行时是否锁定?,sql-server-2008,rowlocking,Sql Server 2008,Rowlocking,当我在SQLServerManagementStudio中右键单击一个表并选择“编辑前200行”时,我正在查看的数据会在什么时候被锁定 我的一位同事说,当以这种方式查看数据时,数据行可以被锁定(我想当他说如果将光标放在一行上并开始编辑数据时) 这是唯一一次可以在此上下文中锁定数据吗?默认情况下,在SSMS GUI编辑器中不会锁定数据 如果您进行更改并尝试保存,您将收到错误/警告、覆盖/放弃等。抱歉,我现在无法测试以查看确切的消息。这不是真的。在一个窗口中运行此脚本(并保持其运行): 每隔5秒,它

当我在SQLServerManagementStudio中右键单击一个表并选择“编辑前200行”时,我正在查看的数据会在什么时候被锁定

我的一位同事说,当以这种方式查看数据时,数据行可以被锁定(我想当他说如果将光标放在一行上并开始编辑数据时)


这是唯一一次可以在此上下文中锁定数据吗?

默认情况下,在SSMS GUI编辑器中不会锁定数据


如果您进行更改并尝试保存,您将收到错误/警告、覆盖/放弃等。抱歉,我现在无法测试以查看确切的消息。

这不是真的。在一个窗口中运行此脚本(并保持其运行):

每隔5秒,它会翻转
Val1
列的值,并在消息选项卡中打印
Updated
(假设您设置为“网格中的结果”)


然后,在SSMS的另一个实例中,打开
Tx
表并开始编辑其中的单行。请注意,脚本将继续执行更新。

它可以被锁定。在“编辑”面板中,尝试插入一行并违反主键约束。您将得到一个错误对话框弹出消息。当您阅读该消息时,该表现在将被锁定。如果您未确认消息就离开,该表将被无限期锁定。我刚刚向SSMS 2008R2和SSMS 2012确认了这一点。

感谢Damien和gbn的回答。我想把两者都标为已接受。我将接受Damien的,因为提供的SQL脚本可以帮助我证明在SSMS中编辑数据时会发生什么。但同样要感谢你们两位。似乎有些错误/警告对话框实际上会导致锁定-我在一个新的答案中对此进行了详细说明。这有点可怕。虽然幸运的是,我们团队中没有任何人会像这样打开对话框!(我希望:))谢谢你努力证明这一点。非常感谢。
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