• You can also use an inline Tally table:

    DECLARE @Month DATETIME

    SELECT @Month = '2009-02-01'

    ; WITH

    t1 AS (SELECT 1 N UNION ALL SELECT 1 N), -- 2

    t2 AS (SELECT 1 N FROM t1 x, t1 y), -- 4

    t3 AS (SELECT 1 N FROM t2 x, t2 y), -- 16

    Tally AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) N FROM t3 x, t3 y) -- 256

    SELECT

    N

    FROM Tally

    WHERE

    N <= DATEDIFF(DAY, @Month, DATEADD(MONTH, 1, @Month))