Eu tenho dois scripts do SQL Server 2008 que podem ser executados de um script do ASP.NET simultaneamente.
Aqui está um:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
--select, delete, update, insert rows in Table1
COMMIT;
SET XACT_ABORT OFF;
E então esta instrução para renomear e excluir a tabela:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
EXEC sp_rename "Table1", "Table2"; --rename Table1 into Table2
DROP TABLE Table1;
COMMIT;
SET XACT_ABORT OFF;
Minha pergunta é, como você pode ver, estou usando ISOLATION LEVEL SERIALIZABLE
para resolver o problema desses dois que estão executando o mesmo tipo, deixando apenas um executar, mas minha pergunta é: essa exclusão mútua afeta o EXEC sp_rename
Comando SQL?
Respostas:
0 para resposta № 1sp_rename não é afetado pelo nível de isolamento. O nível de isolamento afeta o bloqueio e o controle de versão da linha. http://msdn.microsoft.com/en-us/library/ms173763.aspx Você não precisa desse nível de isolamento para nenhum deles, não pode renomear uma tabela com bloqueios a partir de uma seleção, inserção ou atualização.