Tenho uma consulta no SQL Server 2008 que ao usar sp_whoisactive com get_locks = 1 tem os seguintes bloqueios abertos....
<Object name="my_table" schema_name="dbo">
<Locks>
<Lock resource_type="KEY" index_name="pk_mypk" request_mode="X" request_status="GRANT" request_count="1" />
<Lock resource_type="OBJECT" request_mode="IX" request_status="GRANT" request_count="1" />
<Lock resource_type="PAGE" page_type="*" index_name="pk_mypk" request_mode="IX" request_status="GRANT" request_count="1" />
</Locks>
</Object>
Eu entendo o bloqueio de chave e página, mas não tenho certeza de qual é o objeto. Isso é um cadeado de mesa? Em caso afirmativo, por que se incomodou em receber bloqueios de chave e página também? Existem maneiras de descobrir por que uma consulta específica que está tocando apenas um pequeno conjunto de linhas usaria um bloqueio de tabela, suponho que seja o escalonamento de bloqueio.
Referência:
Veja a referência acima para mais detalhes.
Intent = Usado para estabelecer uma hierarquia de bloqueio. Os tipos de bloqueios de intenção são: intenção compartilhada (IS), intenção exclusiva (IX) e compartilhada com intenção exclusiva (SIX).