1

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

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
4

2 回答 2

2

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

msdn 链接

于 2013-02-06T09:10:40.820 回答
1

事务中允许的 Transact-SQL 语句 (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 数据库的任何系统过程。

于 2013-02-06T09:26:58.157 回答