Preciso de bloqueio em nível de linha

Esta é uma extensão paraÉ possível forçar o bloqueio de nível de linha no SQL Server?. Aqui está o caso de uso

Eu tenho uma tabela de contas com números de contas, saldos, etc. Esta tabela está sendo usada por muitos aplicativos. É bem possível que, enquanto estou modificando uma conta, outra pessoa esteja modificando outra conta. Assim, o comportamento esperado é que eu iria bloquear minha conta (ROW) e o outro uso irá bloquear o seu (outra linha).

Mas o SQL Server 2008 R2 escalona esse bloqueio para página / tabela e o segundo usuário obtém exceção de tempo limite. Eu tentei todas as soluções mencionadas na questão referenciada, mas nada está funcionando.

Como posso forçar o SQL Server a bloquear somente um bloqueio em nível de linha OU como posso modificar esse modelo de maneira que funcione com o bloqueio de página / tabela?

EDITAR A atualização tem como alvo um único registro por meio de seu PK e é indexado de modo que apenas UM ROW esteja sendo atualizado / bloqueado e o processo não leva mais de um minuto

Editar Agora parece que algo estranho está acontecendo. Eu estou usando uma biblioteca ORM para DAL que está abrindo mais de uma conexão e levantei a questão para o suporte deles. Mas, para fins de teste, eu abri duas sessões na ferramenta de consulta e fiz o seguinte

Session # 1
begin tran
UPDATE myTable SET COL_1 = COL_1 WHERE COL_1 = 101;

Session # 2
SELECT COL_1 FROM myTable WHERE COL_1 = 101;

A consulta na Session # 2 expira !!! Consultas para outros valores deCOL_1 estão funcionando bem. Agora parece que o SELECT está bloqueado para uma sessão se o mesmo registro estiver no modo de edição em outra sessão.

Embora o Oracle suporte seleção de uma linha (com parâmetros padrão / sem palavras-chave) enquanto ele está sendo modificado por outra sessão, o SQL Server não (com parâmetros padrão / sem palavras-chave), então parece que o problema é com a biblioteca.

questionAnswers(2)

yourAnswerToTheQuestion