私のテストテーブルには2つの列があります。
id         int not null  
somecolumn varchar(10))
今私のクエリを参照してください:
USE TRY
BEGIN TRANSACTION T1
INSERT INTO Test VALUES(7,'hi');
GO
INSERT INTO Test VALUES(8,'hi','ABC');
GO
PRINT @@ERROR
if @@ERROR>0
    ROLLBACK TRANSACTION T1
ELSE
    COMMIT TRANSACTION T1
2番目のクエリが間違っていることがわかっているので、トランザクションをロールバックしたいのですが、最初のクエリが挿入され、次のメッセージが表示されます。
(1 row(s) affected)  
Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.
213