Estou testando meu aplicativo. Preciso de um código estável que simule o impasse no site do banco de dados (script sql, se possível).
Obrigado.
ADICIONADO:
sql-server
deadlock
garik
fonte
fonte
Respostas:
A melhor maneira seria usar as tabelas que você já possui. Crie duas tabelas - tabela-a, tabela-b. Para um teste, você pode atualizar a mesma coluna com as mesmas informações para não afetar nenhum dado real.
Por exemplo, UPDATE table_a defina ID = ID em que ID = 100;
Abra duas sessões no mesmo banco de dados. Em um, corra
Em duas corridas
Em seguida, copie as instruções de atualização para as sessões opostas e execute ao mesmo tempo. Em um,
Em dois
Eu apenas tentei isso agora e entrei no MS-SQL
fonte
Use o
sp_getapplock
procedimento armazenado do sistema para levar o que for necessário para seu código de exemplo.A rigor, este é um semáforo Dijkstra . Ainda muito útil
fonte
sp_getapplock
não lançará um erro. Ele nem vai esperar o tempo limite para expirar, ou (se não houver um timeout), retorno-3
( msdn.microsoft.com/en-us/library/ms189823.aspx )Aqui está outro método semelhante ao postado acima ->
Script a ser usado na janela de consulta nº 1
Script a ser usado na janela de consulta 2
Script a ser adicionado à janela de consulta nº 1
Para obter detalhes adicionais sobre isso, consulte http://ajitananthram.wordpress.com/2014/02/23/scripts-to-force-a-deadlock-in-sql-server/
fonte