sp_lock (Transact-SQL)
Aplica-se: SQL Server
Reporta informações sobre bloqueios.
Importante
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Para obter informações sobre bloqueios no Mecanismo de Banco de Dados do SQL Server, use a exibição de gerenciamento dinâmico sys.dm_tran_locks .
Convenções de sintaxe de Transact-SQL
sp_lock
[ [ @spid1 = ] spid1 ]
[ , [ @spid2 = ] spid2 ]
[ ; ]
Um número de ID de sessão do Mecanismo de Banco de Dados para o qual o usuário deseja informações de sys.dm_exec_sessions
bloqueio. @spid1 é int, com um padrão de NULL
. Execute sp_who
para obter informações do processo sobre a sessão. Se @spid1 não for especificado, as informações sobre todos os bloqueios serão exibidas.
Outro número de ID de sessão do Mecanismo de Banco de sys.dm_exec_sessions
Dados pode ter um bloqueio ao mesmo tempo que @spid1 e sobre o qual o usuário também deseja informações. @spid2 é int, com um padrão de NULL
.
0
(sucesso).
O sp_lock
conjunto de resultados contém uma linha para cada bloqueio mantido pelas sessões especificadas nos parâmetros @spid1 e @spid2 . Se nem @spid1 nem @spid2 forem especificados, o conjunto de resultados relatará os bloqueios de todas as sessões atualmente ativas na instância do Mecanismo de Banco de Dados.
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
spid |
smallint | O número de ID da sessão do Mecanismo de Banco de Dados para o processo que solicita o bloqueio. |
dbid |
smallint | O número de identificação do banco de dados no qual o bloqueio é mantido. Você pode usar a DB_NAME() função para identificar o banco de dados. |
ObjId |
int | O número de identificação do objeto no qual o bloqueio é mantido. Você pode usar a OBJECT_NAME() função no banco de dados relacionado para identificar o objeto. Um valor de 99 é um caso especial que indica um bloqueio em uma das páginas do sistema usadas para registrar a alocação de páginas em um banco de dados. |
IndId |
smallint | O número de identificação do índice no qual o bloqueio é mantido. |
Type |
nchar(4) | O tipo de bloqueio:RID = Bloquear em uma única linha em uma tabela identificada por um identificador de linha (RID).KEY = Bloqueie dentro de um índice que protege um intervalo de chaves em transações serializáveis.PAG = Bloquear em uma página de dados ou índice.EXT = Bloquear em uma extensão.TAB = Bloqueie uma tabela inteira, incluindo todos os dados e índices.DB = Bloquear em um banco de dados.FIL = Bloquear em um arquivo de banco de dados.APP = Bloquear em um recurso especificado pelo aplicativo.MD = Bloqueios em metadados ou informações de catálogo.HBT = Bloqueio em um heap ou B-Tree (HoBT). Essas informações estão incompletas no SQL Server.AU = Bloquear em uma unidade de alocação. Essas informações estão incompletas no SQL Server. |
Resource |
nchar(32) | O valor que identifica o recurso bloqueado. O formato do valor depende do tipo de recurso identificado na Type coluna:Type Valor: Resource ValorRID : Um identificador no formato fileid:pagenumber:rid , onde fileid identifica o arquivo que contém a página, pagenumber identifica a página que contém a linha e rid identifica a linha específica na página. fileid corresponde à file_id coluna na exibição do sys.database_files catálogo.KEY : um número hexadecimal usado internamente pelo Mecanismo de Banco de Dados.PAG : Um número no formato fileid:pagenumber , onde fileid identifica o arquivo que contém a página e pagenumber identifica a página.EXT : Um número que identifica a primeira página na extensão. O número está no formato fileid:pagenumber .TAB : Nenhuma informação fornecida porque a tabela já está identificada na ObjId coluna.DB : Nenhuma informação fornecida porque o banco de dados já está identificado na dbid coluna.FIL : O identificador do arquivo, que corresponde à file_id coluna na exibição do sys.database_files catálogo.APP : Um identificador exclusivo para o recurso do aplicativo que está sendo bloqueado. No formato DbPrincipalId:<first two to 16 characters of the resource string><hashed value> .MD : varia de acordo com o tipo de recurso. Para obter mais informações, consulte a descrição da resource_description coluna em sys.dm_tran_locks.HBT : Nenhuma informação fornecida. Em vez disso, use a sys.dm_tran_locks exibição de gerenciamento dinâmico.AU : Nenhuma informação fornecida. Em vez disso, use a sys.dm_tran_locks exibição de gerenciamento dinâmico. |
Mode |
nvarchar(8) | O modo de bloqueio solicitado. Pode ser:NULL = Nenhum acesso é concedido ao recurso. Funciona como espaço reservado.Sch-S = Estabilidade do esquema. Garante que um elemento de esquema, como uma tabela ou índice, não seja descartado enquanto qualquer sessão mantiver um bloqueio de estabilidade de esquema no elemento de esquema.Sch-M = Modificação do esquema. Deve ser mantido por qualquer sessão que desejar alterar o esquema do recurso especificado. Assegura que nenhuma outra sessão esteja fazendo referência ao objeto indicado.S = Compartilhado. A sessão mantenedora possui acesso compartilhado ao recurso.U = Atualizar. Indica um bloqueio de atualização adquirido em recursos que podem eventualmente ser atualizados. Ele é usado para evitar uma forma comum de deadlock que ocorre quando várias sessões bloqueiam recursos para possível atualização posteriormente.X = Exclusivo. A sessão mantenedora possui acesso exclusivo ao recurso.IS = Intenção compartilhada. Indica a intenção de colocar bloqueios S em algum recurso subordinado na hierarquia de bloqueio.IU = Atualização de intenção. Indica a intenção de colocar bloqueios U em algum recurso subordinado na hierarquia de bloqueio.IX = Intenção exclusiva. Indica a intenção de colocar bloqueios X em algum recurso subordinado na hierarquia de bloqueio.SIU = Atualização de intenção compartilhada. Indica o acesso compartilhado a um recurso com a intenção de adquirir bloqueios de atualização em recursos subordinados na hierarquia de bloqueio.SIX = Exclusivo de intenção compartilhada. Indica o acesso compartilhado a um recurso com a intenção de adquirir bloqueios exclusivos em recursos subordinados na hierarquia de bloqueio.UIX = Exclusivo de intenção de atualização. Indica a manutenção de um bloqueio de atualização de um recurso com a intenção de adquirir bloqueios exclusivos em recursos subordinados na hierarquia de bloqueio.BU = Atualização em massa. Usado por operações em massa.RangeS_S = Bloqueio de intervalo de chaves compartilhado e recurso compartilhado. Indica varredura de intervalo serializável.RangeS_U = Bloqueio de intervalo de chaves compartilhado e recurso de atualização. Indica verificação de atualização serializável.RangeI_N = Insira o bloqueio Key-Range e Null Resource. Usado para testar intervalos antes de inserir uma nova chave em um índice.RangeI_S = Bloqueio de conversão de intervalo de chaves. Criado por uma sobreposição dos bloqueios RangeI_N e S.RangeI_U = Bloqueio de conversão de intervalo de teclas criado por uma sobreposição de bloqueios RangeI_N e U.RangeI_X = Bloqueio de conversão de intervalo de chaves criado por uma sobreposição de bloqueios RangeI_N e X.RangeX_S = Bloqueio de conversão de intervalo de teclas criado por uma sobreposição de RangeI_N e RangeS_S. RangeS-S.RangeX_U = Bloqueio de conversão de intervalo de chave criado por uma sobreposição de bloqueios de RangeI_N e RangeS_U.RangeX_X = Bloqueio exclusivo de chave-intervalo e recurso exclusivo. Este é um bloqueio de conversão usado na atualização de uma chave em um intervalo. |
Status |
nvarchar(5) | O estado de solicitação do bloqueio:CNVRT : O bloqueio está sendo convertido de outro modo, mas a conversão é bloqueada por outro processo que mantém um bloqueio com um modo conflitante.GRANT : A fechadura foi obtida.WAIT : O bloqueio é bloqueado por outro processo que mantém um bloqueio com um modo conflitante. |
Os usuários podem controlar o bloqueio de operações de leitura:
Usando
SET TRANSACTION ISOLATION LEVEL
para especificar o nível de bloqueio de uma sessão. Para obter sintaxe e restrições, consulte SET TRANSACTION ISOLATION LEVEL (Transact-SQL).Usando dicas de tabela de bloqueio para especificar o nível de bloqueio para uma referência individual de uma tabela em uma
FROM
cláusula. Para obter sintaxe e restrições, consulte Dicas de tabela (Transact-SQL).
Todas as transações distribuídas não associadas a uma sessão são transações órfãs. O Mecanismo de Banco de Dados atribui a todas as transações distribuídas órfãs o valor SPID de , o que torna mais fácil para um usuário identificar transações distribuídas -2
bloqueadas. Para obter mais informações, consulte Usar transações marcadas para recuperar bancos de dados relacionados de forma consistente.
Requer a permissão VIEW SERVER STATE
.
O exemplo a seguir exibe informações sobre todos os bloqueios mantidos atualmente em uma instância do Mecanismo de Banco de Dados.
USE master;
GO
EXEC sp_lock;
GO
O exemplo a seguir exibe informações, inclusive bloqueios, sobre a identificação do processo 53
.
USE master;
GO
EXEC sp_lock 53;
GO