Partilhar via


Dicas de bloqueio

Você pode especificar um intervalo de dicas de bloqueio em nível de tabela com o uso das instruções SELECT, INSERT, UPDATE e DELETE para modificar o comportamento de bloqueio padrão do Microsoft SQL Server Compact 4.0. Use as dicas de bloqueio somente quando for absolutamente necessário. Elas podem afetar a simultaneidade adversamente.

Importante

O SQL Server Compact 4.0 adquire automaticamente os bloqueios necessários para uma operação. Se você usar as dicas de bloqueios listadas na tabela a seguir, o SQL Server Compact 4.0 aumentará a quantidade de bloqueios que ocorrem. Não é possível usar dicas de bloqueio para evitar recursos de bloqueio.

A tabela a seguir descreve as dicas de bloqueio que você pode usar no SQL Server Compact 4.0.

Nome da dica de bloqueio

Descrição da dica

GRANULARITY

ROWLOCK

Use os bloqueios em nível de linha ao ler ou modificar dados. Eles são adquiridos e liberados, conforme apropriado.

As operações SELECT obtêm bloqueios S nas linhas.

PAGLOCK

Use os bloqueios em nível de página ao ler ou modificar dados. Eles são adquiridos e liberados, conforme apropriado.

As operações SELECT obtêm bloqueios S nas páginas.

TABLOCK

Use um bloqueio de tabela ao ler ou modificar dados. Esse bloqueio é mantido até o final da instrução.

As operações SELECT obtêm bloqueios S nas tabelas.

DBLOCK

Use um bloqueio de banco de dados ao ler ou modificar dados. Esse bloqueio é mantido até o final da instrução.

As operações SELECT obtêm bloqueios S nos bancos de dados.

LOCKMODES

UPDLOCK

Use os bloqueios de atualização, e não os bloqueios compartilhados, ao ler uma tabela e use os bloqueios mantidos até o final da instrução ou transação. UPDLOCK permite que você leia dados sem bloquear outros leitores e os atualize depois com a garantia de que eles não foram alterados desde a última leitura.

As operações SELECT obtêm bloqueios U. A granularidade padrão é ROWLOCK.

XLOCK

Use os bloqueios exclusivos, e não os bloqueios compartilhados, ao ler uma tabela e use os bloqueios mantidos até o final da instrução ou transação.

As operações SELECT obtêm bloqueios X. A granularidade padrão é ROWLOCK.

DURATION

HOLDLOCK

Use um bloqueio mantido para manter um bloqueio até a conclusão da transação, em vez de liberá-lo assim que a tabela, linha ou página de dados requerida não é mais necessária.

Se nenhuma granularidade for especificada, ROWLOCK será aplicado.

NOLOCK

Não emite nenhum bloqueio. Esse é o padrão para operações SELECT. Isso não se aplica para instruções INSERT, UPDATE e DELETE.

ObservaçãoObservação
Com o SQL Server, uma dica NOLOCK permite o comportamento de Leitura não confirmada. Com o SQL Server Compact 4.0, usar uma dica NOLOCK ainda fornecerá um nível de isolamento de Leitura confirmada. O SQL Server Compact 4.0 mantém cópias de dados para garantir que esses dados possam ler sem a necessidade de bloqueios de compartilhamento para ajudar a proteger os dados.

Para obter mais informações sobre como usar as dicas de bloqueio, consulte "Dicas de bloqueio" nos Manuais Online do SQL Server.

Dica NOLOCK

O uso das dicas de bloqueio no SQL Server Compact 4.0 é semelhante ao uso no SQL Server. No entanto, para o SQL Server Compact 4.0, a dica NOLOCK tem um comportamento muito diferente do que no SQL Server. No SQL Server Compact 4.0, a dica NOLOCK é o comportamento para instruções SELECT, mas isso ainda força o comportamento de Leitura confirmada.

No SQL Server, uma instrução SELECT com o nível de isolamento padrão de Leitura confirmada faz com que os bloqueios S sejam obtidos e liberados nas linhas à medida que são lidos. Embora isso force o nível de isolamento, significa que uma instrução SELECT aguardará se existir um bloqueio incompatível em uma linha para a qual o bloqueio S é requerido. Quando a dica NOLOCK é especificada, a operação SELECT não tenta obter o bloqueio S e os dados são lidos. Embora isso permita o êxito da operação, também significa que a instrução SELECT pode ler dados não confirmados.

O SQL Server Compact 4.0 não usa bloqueios S para garantir que os dados sejam de Leitura confirmada. Como o SQL Server Compact 4.0 usa um mecanismo de versão de página quando altera dados, os dados requeridos por uma instrução SELECT podem ser lidos da cópia apropriada da página. Não é necessário obter bloqueios S para garantir a Leitura confirmada. Assim, embora o SQL Server Compact 4.0 esteja usando NOLOCK para uma instrução SELECT, os dados são lidos no nível de isolamento de Leitura confirmada. Não é possível ter uma leitura suja (Leitura não confirmada) com o SQL Server Compact 4.0.

Dica

A dica NOLOCK não afeta os bloqueios Sch-S ou Sch-X.

Consulte também

Conceitos

Compreendendo o bloqueio

Nível de isolamento da transação

Exibindo informações de bloqueio

Tempo limite de bloqueio