我有两个可以同时从ASP.NET脚本执行的SQL Server 2008脚本。
这是一个:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
--select, delete, update, insert rows in Table1
COMMIT;
SET XACT_ABORT OFF;
然后这个语句重命名并删除表:
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;
我的问题是,你可以看到我正在使用ISOLATION LEVEL SERIALIZABLE
来解决那两个运行相同类型的问题,只允许一次运行,但我的问题是,这种相互排斥会影响{ {1}} SQL命令?
答案 0 :(得分:0)
sp_rename不受隔离级别的影响。隔离级别会影响锁定和行版本控制。 http://msdn.microsoft.com/en-us/library/ms173763.aspx对于其中任何一个,您不需要此隔离级别,也不能从select,insert或update中重命名具有锁定的表。