Hi Dave,
I am consulting internally on this. To my understanding, this behavior is based on the ASE severity level, as returned in the TDS_EED token. AseExceptions are thrown when severity level is 11 or higher.
Our docs are not explanatory in this regard. Once I get clarification we will provide something in the form of wiki or KBA or doc bug to further explain the detail. Apologize for the delay and problems this caused. I guess since the command is aborted by ASE, therefore no insertion occurs, even though ASE indicates truncation occurs prior - makes this confusing.
The message severity, etc is controlled by ASE and the client is just following suit according to the TDS spec. Its just lacking in the client docs. This can be remedied.
ASE does provide the option to allow truncation and not abort. It's a set command:
Enter a query:
1 > set arithabort numeric_truncation off
Enter a query:
1 > INSERT dbo.TARGET (S_Name_NVARCHAR,S_RedComponent_DEC_15_6,S_BlueComponent_DEC_12_2,S_GreenComponent_DEC_18_10) SELECT LEFT( S.Name_NVARCHAR,8000),S.GreenComponent_DEC,S.GreenComponent_DEC,S.GreenComponent_DEC FROM (SELECT * FROM SOURCE
) S
4 rows Affected.
Notice though ASE does NOT send truncation message. This is when it is well known and accepted to insert and truncate the numeric data.
Cheers,
-Paul