2011-12-22 24 views
5

Cuando hago clic con el botón derecho en una tabla en SQL Server Management Studio y selecciono 'Editar las 200 primeras filas', ¿en qué punto, si es que alguna vez, los datos que estoy viendo estarán bloqueados?¿Las filas de datos están bloqueadas al editarlas en SQL Server Management Studio 2008?

Un colega mío dijo que al ver los datos de esta manera, las filas de datos se pueden bloquear (creo que cuando dijo si coloca el cursor en una fila y comienza a editar datos).

¿Es este el único momento en que los datos se pueden bloquear en este contexto?

Respuesta

5

No es cierto. Ejecutar este script en una ventana (y dejarlo encendido):

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 

Cada 5 segundos, se voltea el valor de la columna de Val1, e imprime Updated en la pestaña de mensajes (asumiendo que usted está ajustado en "resultados en cuadrícula").

Luego, en otra instancia de SSMS, abra la tabla Tx y comience a editar la fila única allí. Observe que el script continúa realizando actualizaciones.

+0

Gracias a Damien y gbn por sus respuestas. Me gustaría marcar ambos como aceptados. Aceptaré a Damien debido a la secuencia de comandos SQL proporcionada que puede ayudarme a probar lo que sucede en SSMS cuando edito datos. Pero gracias a los dos por igual. –

2

Los datos no se bloquearán de forma predeterminada en el editor de la GUI de SSMS.

Si realiza cambios y trata de guardar, obtendrá errores/advertencia de sobreescritura/descarte, etc. No puedo realizar la prueba en este momento para ver los mensajes exactos, lo siento.

+0

Parece que algunos de los cuadros de diálogo de errores/advertencias en realidad pueden causar un bloqueo. Lo detallé en una nueva respuesta. – TTT

1

Se puede bloquear. En el Panel de edición, intente insertar una fila y violar la restricción de la clave principal. Obtendrá un mensaje emergente de diálogo de error. La tabla ahora estará bloqueada mientras estás leyendo ese mensaje. Si se va sin confirmar el mensaje, esa mesa se bloqueará indefinidamente. Acabo de confirmar esto con SSMS 2008R2 y SSMS 2012.

+0

Eso da un poco de miedo. ¡Aunque afortunadamente no teníamos a nadie en nuestro equipo que dejara abierto un diálogo como ese! (Espero :)) Gracias por ir al esfuerzo de demostrar esto sin embargo. Muy apreciado. –

Cuestiones relacionadas