sp_lock (Transact-SQL)sp_lock (Transact-SQL)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Reporta informações sobre bloqueios.Reports information about locks.

Importante

Este recurso está em modo de manutenção e talvez seja removido em uma versão futura do Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. para obter informações sobre bloqueios no Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine, use a exibição de gerenciamento dinâmico Sys. dm_tran_locks .To obtain information about locks in the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine, use the sys.dm_tran_locks dynamic management view.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

sp_lock [ [ @spid1 = ] 'session ID1' ] [ , [@spid2 = ] 'session ID2' ]  
[ ; ]  

ArgumentosArguments

[ @spid1 = ] 'session ID1' é um número de ID de sessão de Mecanismo de Banco de DadosDatabase Engine de Sys. dm_exec_sessions para o qual o usuário deseja informações de bloqueio.[ @spid1 = ] 'session ID1' Is a Mecanismo de Banco de DadosDatabase Engine session ID number from sys.dm_exec_sessions for which the user wants locking information. a sessão ID1 é int com um valor padrão de NULL.session ID1 is int with a default value of NULL. Execute sp_who para obter informações de processo sobre a sessão.Execute sp_who to obtain process information about the session. Se a sessão ID1 não for especificada, serão exibidas informações sobre todos os bloqueios.If session ID1 is not specified, information about all locks is displayed.

[ @spid2 = ] 'session ID2' é outro número de ID de sessão de Mecanismo de Banco de DadosDatabase Engine de Sys. dm_exec_sessions que pode ter um bloqueio ao mesmo tempo que a sessão ID1 e sobre o qual o usuário também deseja informações.[ @spid2 = ] 'session ID2' Is another Mecanismo de Banco de DadosDatabase Engine session ID number from sys.dm_exec_sessions that might have a lock at the same time as session ID1 and about which the user also wants information. a sessão ID2 é int com um valor padrão de NULL.session ID2 is int with a default value of NULL.

Valores do código de retornoReturn Code Values

0 (êxito)0 (success)

Conjuntos de resultadosResult Sets

O conjunto de resultados sp_lock contém uma linha para cada bloqueio mantido pelas sessões especificadas nos parâmetros @spid1 e @spid2 .The sp_lock result set contains one row for each lock held by the sessions specified in the @spid1 and @spid2 parameters. Se nem @spid1 nem @spid2 forem especificadas, o conjunto de resultados relatará os bloqueios para todas as sessões atualmente ativas na instância do Mecanismo de Banco de DadosDatabase Engine.If neither @spid1 nor @spid2 is specified, the result set reports the locks for all sessions currently active in the instance of the Mecanismo de Banco de DadosDatabase Engine.

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
spidspid smallintsmallint A identificação da sessão Mecanismo de Banco de DadosDatabase Engine para o processo solicitando o bloqueio.The Mecanismo de Banco de DadosDatabase Engine session ID number for the process requesting the lock.
dbiddbid smallintsmallint O número de identificação do banco de dados no qual o bloqueio é mantido.The identification number of the database in which the lock is held. Você pode usar a função DB_NAME() para identificar o banco de dados.You can use the DB_NAME() function to identify the database.
ObjIdObjId intint O número de identificação do objeto no qual o bloqueio é mantido.The identification number of the object on which the lock is held. Você pode usar a função OBJECT_NAME() no banco de dados relacionado para identificar o objeto.You can use the OBJECT_NAME() function in the related database to identify the object. Um valor de 99 é um caso especial que indica um bloqueio em uma das páginas do sistema usada para registrar a alocação de páginas em um banco de dados.A value of 99 is a special case that indicates a lock on one of the system pages used to record the allocation of pages in a database.
IndIdIndId smallintsmallint O número de identificação do índice no qual o bloqueio é mantido.The identification number of the index on which the lock is held.
TipoType nchar(4)nchar(4) O tipo de bloqueio:The lock type:

RID = Bloqueio em uma única linha na tabela identificada por um identificador de linha (RID).RID = Lock on a single row in a table identified by a row identifier (RID).

KEY = Bloqueio dentro de um índice que protege um intervalo de chaves em transações serializáveis.KEY = Lock within an index that protects a range of keys in serializable transactions.

PAG = Bloqueio em uma página de dados ou de índice.PAG = Lock on a data or index page.

EXT = Bloqueio em uma extensão.EXT = Lock on an extent.

TAB = Bloqueio em uma tabela inteira, inclusive todos os dados e índices.TAB = Lock on an entire table, including all data and indexes.

DB = Bloqueio em um banco de dados.DB = Lock on a database.

FIL = Bloqueio em um arquivo de banco de dados.FIL = Lock on a database file.

APP = Bloqueio em um recurso de aplicativo especificado.APP = Lock on an application-specified resource.

MD = Bloqueio em metadados ou informações do catálogo.MD = Locks on metadata, or catalog information.

HBT = Lock em um heap ou árvore B (HoBT).HBT = Lock on a heap or B-Tree (HoBT). Essas informações estão incompletas no SQL ServerSQL Server.This information is incomplete in SQL ServerSQL Server.

AU = Bloqueio em uma unidade de alocação.AU = Lock on an allocation unit. Essas informações estão incompletas no SQL ServerSQL Server.This information is incomplete in SQL ServerSQL Server.
KitResource nchar(32)nchar(32) O valor que identifica o recurso bloqueado.The value identifying the resource that is locked. O formato do valor depende do tipo de recurso identificado na coluna tipo :The format of the value depends on the type of resource identified in the Type column:

Tipo de Valor: valor do recursoType Value: Resource Value

RID: 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 da página.RID: An identifier in the format fileid:pagenumber:rid, where fileid identifies the file containing the page, pagenumber identifies the page containing the row, and rid identifies the specific row on the page. FileID corresponde à coluna file_id na exibição de catálogo Sys. database_files .fileid matches the file_id column in the sys.database_files catalog view.

KEY: Um número hexadecimal usado internamente pelo Mecanismo de Banco de DadosDatabase Engine.KEY: A hexadecimal number used internally by the Mecanismo de Banco de DadosDatabase Engine.

PAG: Um número no formato idarquivo:númeropágina, onde idarquivo identifica o arquivo que contém a página e númeropágina identifica a página.PAG: A number in the format fileid:pagenumber, where fileid identifies the file containing the page, and pagenumber identifies the page.

EXT: Um número que identifica a primeira página na extensão.EXT: A number identifying the first page in the extent. O número está no formato idarquivo:númeropágina.The number is in the format fileid:pagenumber.

Guia: nenhuma informação fornecida porque a tabela já está identificada na coluna objID .TAB: No information provided because the table is already identified in the ObjId column.

BANCO de dados: nenhuma informação fornecida porque o banco de dados já está identificado na coluna DBID .DB: No information provided because the database is already identified in the dbid column.

FIL: o identificador do arquivo, que corresponde à coluna file_id na exibição de catálogo Sys. database_files .FIL: The identifier of the file, which matches the file_id column in the sys.database_files catalog view.

APP: Um identificador exclusivo para o recurso de aplicativo a ser bloqueado.APP: An identifier unique to the application resource being locked. No formato DbPrincipleId:<primeiros dois a 16 caracteres da cadeia de caracteres de recurso ><valor com hash >.In the format DbPrincipleId:<first two to 16 characters of the resource string><hashed value>.

MD: varia por tipo de recurso.MD: varies by resource type. Para obter mais informações, consulte a descrição da coluna resource_description em Sys. DM_TRAN_LOCKS (Transact-SQL).For more information, see the description of the resource_description column in sys.dm_tran_locks (Transact-SQL).

HBT = Nenhuma informação fornecida.HBT: No information provided. Use a exibição de gerenciamento dinâmico Sys. dm_tran_locks em vez disso.Use the sys.dm_tran_locks dynamic management view instead.

AU: Nenhuma informação fornecida.AU: No information provided. Use a exibição de gerenciamento dinâmico Sys. dm_tran_locks em vez disso.Use the sys.dm_tran_locks dynamic management view instead.
ModoMode nvarchar(8)nvarchar(8) O modo de bloqueio solicitado.The lock mode requested. Pode ser:Can be:

NULL = Nenhum acesso concedido ao recurso.NULL = No access is granted to the resource. Funciona como espaço reservado.Serves as a placeholder.

Sch-S = Estabilidade do esquema.Sch-S = Schema stability. Assegura que um elemento de esquema, como uma tabela ou índice, não seja cancelado enquanto qualquer sessão mantém o bloqueio de estabilidade do esquema no elemento do esquema.Ensures that a schema element, such as a table or index, is not dropped while any session holds a schema stability lock on the schema element.

Sch-M = Modificação do esquema.Sch-M = Schema modification. Deve ser mantido por qualquer sessão que desejar alterar o esquema do recurso especificado.Must be held by any session that wants to change the schema of the specified resource. Assegura que nenhuma outra sessão esteja fazendo referência ao objeto indicado.Ensures that no other sessions are referencing the indicated object.

S = Compartilhado.S = Shared. A sessão mantenedora possui acesso compartilhado ao recurso.The holding session is granted shared access to the resource.

U = Atualizar.U = Update. Indica um bloqueio de atualização adquirido em recursos que podem ser atualizados eventualmente.Indicates an update lock acquired on resources that may eventually be updated. É usado para evitar uma forma comum de deadlock que ocorre quando várias sessões bloqueiam recursos para uma atualização potencial em um momento posterior.It is used to prevent a common form of deadlock that occurs when multiple sessions lock resources for potential update at a later time.

X = Exclusivo.X = Exclusive. A sessão mantenedora possui acesso exclusivo ao recurso.The holding session is granted exclusive access to the resource.

IS = Tentativa compartilhada.IS = Intent Shared. Indica a intenção de colocar bloqueios S em algum recurso subordinado na hierarquia de bloqueio.Indicates the intention to place S locks on some subordinate resource in the lock hierarchy.

IU = Atualização da tentativa.IU = Intent Update. Indica a intenção de colocar bloqueios U em algum recurso subordinado na hierarquia de bloqueio.Indicates the intention to place U locks on some subordinate resource in the lock hierarchy.

IX = Exclusivo da tentativa.IX = Intent Exclusive. Indica a intenção de colocar bloqueios X em algum recurso subordinado na hierarquia de bloqueio.Indicates the intention to place X locks on some subordinate resource in the lock hierarchy.

SIU = Atualização da tentativa compartilhada.SIU = Shared Intent Update. Indica o acesso compartilhado a um recurso com a intenção de adquirir bloqueios de atualização em recursos subordinados na hierarquia de bloqueio.Indicates shared access to a resource with the intent of acquiring update locks on subordinate resources in the lock hierarchy.

SIX = Exclusivo da tentativa compartilhada.SIX = Shared Intent Exclusive. Indica o acesso compartilhado a um recurso com a intenção de adquirir bloqueios exclusivos em recursos subordinados na hierarquia de bloqueio.Indicates shared access to a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.

UIX = Atualizar exclusivo da tentativa.UIX = Update Intent Exclusive. 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.Indicates an update lock hold on a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.

BU = Atualização em massa.BU = Bulk Update. Usado por operações em massa.Used by bulk operations.

RangeS_S = Intervalo de chave compartilhada e bloqueio de recurso compartilhado.RangeS_S = Shared Key-Range and Shared Resource lock. Indica varredura de intervalo serializável.Indicates serializable range scan.

RangeS_U = Intervalo de chave compartilhada e bloqueio de recurso de atualização.RangeS_U = Shared Key-Range and Update Resource lock. Indica verificação de atualização serializável.Indicates serializable update scan.

RangeI_N = Intervalo de chave de inserção e bloqueio de recurso nulo.RangeI_N = Insert Key-Range and Null Resource lock. Usado para testar intervalos antes de inserir uma nova chave em um índice.Used to test ranges before inserting a new key into an index.

RangeI_S = Bloqueio de conversão do intervalo de chave.RangeI_S = Key-Range Conversion lock. Criado por uma sobreposição dos bloqueios RangeI_N e S.Created by an overlap of RangeI_N and S locks.

RangeI_U = Bloqueio de conversão de intervalo de chave criado por uma sobreposição dos bloqueios RangeI_N e U.RangeI_U = Key-Range Conversion lock created by an overlap of RangeI_N and U locks.

RangeI_X = Bloqueio de conversão de intervalo de chave criado por uma sobreposição dos bloqueios RangeI_N e X.RangeI_X = Key-Range Conversion lock created by an overlap of RangeI_N and X locks.

RangeX_S = Bloqueio de conversão de intervalo de chaves criado por uma sobreposição de bloqueios RangeI_N eRangeX_S = Key-Range Conversion lock created by an overlap of RangeI_N and RangeS_S. RangeS-S.locks.

RangeIX_U = Bloqueio de conversão de intervalo de chave criado por uma sobreposição dos bloqueios RangeI_N e RangeS-U.RangeX_U = Key-Range Conversion lock created by an overlap of RangeI_N and RangeS_U locks.

RangeX_X = Bloqueio de intervalo de chave exclusivo e de recurso exclusivo.RangeX_X = Exclusive Key-Range and Exclusive Resource lock. Este é um bloqueio de conversão usado na atualização de uma chave em um intervalo.This is a conversion lock used when updating a key in a range.
StatusStatus nvarchar(5)nvarchar(5) O estado de solicitação do bloqueio:The lock request status:

CNVRT: O bloqueio está sendo convertido de outro modo, mas a conversão está bloqueada por outro processo que mantém um bloqueio com um modo conflitante.CNVRT: The lock is being converted from another mode, but the conversion is blocked by another process holding a lock with a conflicting mode.

GRANT: O bloqueio foi obtido.GRANT: The lock was obtained.

WAIT: O bloqueio está bloqueado por outro processo que mantém um bloqueio com um modo conflitante.WAIT: The lock is blocked by another process holding a lock with a conflicting mode.

RemarksRemarks

Os usuários podem controlar o bloqueio de operações de leitura:Users can control the locking of read operations by:

Todas as transações distribuídas não associadas a uma sessão são transações órfãs.All distributed transactions not associated with a session are orphaned transactions. O Mecanismo de Banco de DadosDatabase Engine atribui a todas as transações distribuídas órfãs o valor SPID de -2, que torna mais fácil para um usuário identificar as transações de bloqueio distribuídas.The Mecanismo de Banco de DadosDatabase Engine assigns all orphaned distributed transactions the SPID value of -2, which makes it easier for a user to identify blocking distributed transactions. Para obter mais informações, veja Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).For more information, see Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

PermissõesPermissions

Requer a permissão VIEW SERVER STAT.Requires VIEW SERVER STATE permission.

ExemplosExamples

A.A. Listando todos os bloqueiosListing all locks

O exemplo a seguir exibe informações sobre todos os bloqueios mantidos atualmente em uma instância do Mecanismo de Banco de DadosDatabase Engine.The following example displays information about all locks currently held in an instance of the Mecanismo de Banco de DadosDatabase Engine.

USE master;  
GO  
EXEC sp_lock;  
GO  

B.B. Listando um bloqueio de um processo de servidor únicoListing a lock from a single-server process

O exemplo a seguir exibe informações, inclusive bloqueios, sobre a identificação do processo 53.The following example displays information, including locks, about process ID 53.

USE master;  
GO  
EXEC sp_lock 53;  
GO  

Consulte tambémSee Also

sys.dm_tran_locks (Transact-SQL) sys.dm_tran_locks (Transact-SQL)
DB_NAME (Transact-SQL) DB_NAME (Transact-SQL)
KILL (Transact-SQL) KILL (Transact-SQL)
OBJECT_NAME (Transact-SQL) OBJECT_NAME (Transact-SQL)
sp_who (Transact-SQL) sp_who (Transact-SQL)
sys.database_files (Transact-SQL) sys.database_files (Transact-SQL)
sys.dm_os_tasks (Transact-SQL) sys.dm_os_tasks (Transact-SQL)
sys.dm_os_threads (Transact-SQL)sys.dm_os_threads (Transact-SQL)