Search code examples
sqlprotocolstabular

TDS[Tabular Data stream protocol] int type


Following the TDS spec, I can`t understand if int types are signed or not. For example is tinyint, having hex value 0xFF, represents -1 or 255?

Thanks


Solution

  • MSDN for T-SQL has this table:

    Data type   Range                                                                      Storage
    bigint      -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)   8 Bytes
    int         -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)                           4 Bytes
    smallint    -2^15 (-32,768) to 2^15-1 (32,767)                                         2 Bytes
    tinyint     0 to 255                                                                   1 Byte
    

    Which implies that tinyint is unsigned, but all other (smallint, int, bigint) are signed.

    At least this is how SQL Server interprets types in T-SQL, so you should interpret data in TDS in the same way.