用于重命名表的t-SQL和ISOLATION LEVEL SERIALIZABLE

时间:2013-03-14 00:57:49

标签: sql-server sql-server-2008 tsql

我有两个可以同时从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命令?

1 个答案:

答案 0 :(得分:0)

sp_rename不受隔离级别的影响。隔离级别会影响锁定和行版本控制。 http://msdn.microsoft.com/en-us/library/ms173763.aspx对于其中任何一个,您不需要此隔离级别,也不能从select,insert或update中重命名具有锁定的表。