1

私の簡単な質問は、トランザクション内にテーブル、プロシージャ、列、ビューなどの作成/変更ステートメントを配置できますか?これはどういう意味ですか?以下のステートメントは有効ですか?

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を使用して、データベースオプションを設定するか、明示的または暗黙的なトランザクション内でマスターデータベースを変更するシステムプロシージャを使用します。

于 2013-02-06T09:26:58.157 に答える