• T-SQL INT equivalents of Decimal Numeric

    The DECIMAL type in T-SQL is for storing fixed precision numbers. You can define the total number of digits to store (the precision), as well as how many digits are to the right of the decimal point (the scale)

    eg. to store a number in the range -9.9 to 9.9 (with 0.1 increments), you could use decimal(2, 1).

    Sometimes database systems may store integer values using their equivalent of the decimal type (with a scale of zero), and when you use SSIS to import the data, it just defaults to creating a compatible schema.

    There are some storage and potential performance benefits to using integer data types, so it may be worth checking whether the source data would actually fit inside a native int (or tinyint or bigint).

    First, let’s look at the storage requirements for decimal types. As you can see from Table 1, even a decimal(1,0) will still take up 5 bytes.

    Table 1 - Bytes required to store decimal precision types

    Decimal precision Storage bytes
    1-9 5
    10-19 9
    20-28 13
    29-38 17

    Contrast this with the requirements for the integer types.

    Table 2 - Bytes required to store integer types

    Data type Range Storage bytes
    tinyint 0 to 255 1
    smallint -215 (-32,768) to 215-1 (32,767) 2
    int -231 (-2,147,483,648) to 231-1 (2,147,483,647) 4
    bigint -263 (-9,223,372,036,854,775,808) to 263-1 (9,223,372,036,854,775,807) 8

    So for certain ranges of precision, the value can safely be stored in an equivalent integer type.

    Table 3 - Compatible integer types

    Decimal precision Integer equivalent Bytes saved
    1-2 tinyint 4
    3-4 smallint 3
    5-9 int 1
    10-18 bigint 1

    If you do this, be very careful that you are not inviting overflow errors into your application.

  • Trial by Media Center

    My Media Center has been misbehaving a bit lately, much to my (and the family’s) annoyance.

    First off, it the receiver started showing “tuner not available” errors. Restarting the machine would resolve the problem, but only temporarily. Installing the newer Hauppauge driver seems to have mostly fixed that (from the Hauppauge UK website). Along the way to resolving this, I also tried swapping the card into the other PCI Express slot, just in case that helped.

    Then the Microsoft Remote stopped working. The display on the front of the Antec case said something like “bad command” for any button I pressed. Opening up the iMON software, I enabled sounds for invalid commands, and sure enough every button press resulted in the warning sound. Bizarre! The batteries in the controller were still fresh, so the only thing I could think of was to find the original IR receiver that came with the controller and plug that in. I’d never used it as the Antec case came with a receiver built in. In any case (ha ha), that seemed to resolve that one.

    Then a few hours later, the sound spontaneously muted. Attempts to increase the volume worked briefly, then the volume would automatically wind back down to zero/mute. Alternatively, it rolled right up to 50 (100%). Rebooting and that one went away – not sure what’s going on there.

    So I’m keeping a close eye on things. Maybe the MCE is feeling jealous that the XBox 360 is getting some of it’s screen time 😀

  • Internode Usage meter for Windows Phone 7

    Screen grab of Internode Usage appMy first application for Windows Phone 7 has now been published to the marketplace!

    It’s a free usage meter for Internode’s broadband customers. Want to check how your much quota you have left on your ADSL plan? This app will tell you.

    The first version is pretty simple. It displays two sections. The first (shown above) displays your total quota, amount used so far, and the time the data was retrieved. The second section displays details for your account (see below).

    To install it on your Windows Phone 7 device, go to http://social.zune.net/redirect?type=phoneApp&id=c9ebe665-de0d-e011-9264-00237de2db9e (Opens in Zune)


    ScreenGrab-WelcomeWelcome screen

    When you first run the app, a welcome screen is displayed and you are prompted to go to the settings page to enter your username and password. (In version 1.0, there’s a bug where the big ‘Settings’ button doesn’t do anything – you’ll have to click on the settings icon Settings icon instead. This will be fixed in the next update)



    Enter your Internode username (just the bit before the @ works for me)and password.

    Click on the ‘Save’ icon to store these credentials.


    Your account details, including full username, monthly quota, plan name and plan speed.

    Coming next

    Features I’m thinking of adding for the next update:

    • Usage history – graphs of last 12 months and detailed graph of last 30 days
    • Improved icons (hopefully the Internode logo if permission can be obtained)

    I’m also keen to hear of any other suggestions.


    This application uses the Internode API, however for the canonical source for your usage, please always refer to My Internode.

    In many ways, the app is inspired by Angus Johnson’s Internode Monthly Usage Meter (MUM). I’ve been a happy MUM user for as long as I’ve had Internode ADSL.