我可以在Transaction中放置Create / Alter Table,Procedure,Column,Views等吗?

时间:2013-02-06 09:01:05

标签: sql sql-server-2008

我的简单问题是,我可以在Transaction中放置Create / Alter Table,Procedure,Column,Views等语句吗?我的意思是这个?以下陈述是否有效?

BEGIN TRANSACTION [Tran1]
BEGIN TRY
    --CREATE ALTER Table Procedure 
    --CREATE ALTER Table Procedure 
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION [Tran1];
    DECLARE @ErrorNumber nchar(5), @ErrorMessage nvarchar(2048);
    SELECT
        @ErrorNumber = RIGHT('00000' + ERROR_NUMBER(), 5),
        @ErrorMessage = @ErrorNumber + ' ' + ERROR_MESSAGE();
    RAISERROR (@ErrorMessage, 16, 1);
END CATCH

2 个答案:

答案 0 :(得分:2)

据我所知,在读取提交隔离模式(悲观)中,DDL语句可以是事务性的,这是默认模式。

msdn Link

答案 1 :(得分:1)

Transact-SQL Statements Allowed in Transactions (Sql Server 2008):您可以在显式事务中使用所有Transact-SQL语句,但以下语句除外:

ALTER DATABASE
DROP DATABASE
ALTER FULLTEXT CATALOG  
DROP FULLTEXT CATALOG
ALTER FULLTEXT INDEX    
DROP FULLTEXT INDEX
BACKUP  
RECONFIGURE
CREATE DATABASE
RESTORE
CREATE FULLTEXT CATALOG
UPDATE STATISTICS
CREATE FULLTEXT INDEX

您也无法使用以下内容:

显式事务中的全文系统存储过程。有关详细信息,请参阅全文搜索存储过程(Transact-SQL)。

sp_dboption用于设置数据库选项或使用在显式或隐式事务中修改master数据库的任何系统过程。