If the abort on error is checked, my assumption is that the rollback will never get executed since the script doesn't run all the way thru. This behavior would leave the database in an unknown state. If the flag is checked, according to the docs, it will always report SUCCESS even if there was an error and everything was rolled back. Why wouldn't the result show error?
From the user doc:
The variable will hold one of the following values, or a custom error message as described below:
Value Meaning
SUCCESS Connection to the database succeeded. The script executed successfully, or there were some script execution errors and Abort Execution on Script Error was not checked.
CONNECT_ERROR Connection to the server failed.
CONNECT_DATABASE_ERROR Connection to the database failed.
ERROR An unknown error occured.
In addition to the values in the table above, when Abort Execution on Script Error is checked, and an error occurs during script execution (where database and server connections succeeded), this variable holds detailed error information as follows: The variable is split into two parts, delineated by the string literal DELINEATOR. The first part of the variable holds the exact textual error message. The second part of the variable holds the exact SQL script fragment where execution errors occured. You may parse the variable using the Parse String function to extract both fields and utilize them separately.
Abort Exection on Script Error
Check this box to halt processing of the SQL script if any SQL statement fails. Uncheck this box to allow the SQL script to continue execution even if some SQL statements fail.