7

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

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

这是唯一一次可以在这种情况下锁定数据吗?

4

3 回答 3

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表并开始编辑其中的单行。观察脚本继续执行更新。

于 2011-12-22T10:52:38.063 回答
3

它可以被锁定。在编辑面板中,尝试插入一行并违反主键约束。您将收到一条错误对话框弹出消息。现在,当您阅读该消息时,该表将被锁定。如果您在没有确认消息的情况下走开,那张桌子将被无限期锁定。我刚刚通过 SSMS 2008R2 和 SSMS 2012 确认了这一点。

于 2014-02-22T22:03:15.463 回答
2

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

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

于 2011-12-22T10:50:47.520 回答