As VonGrunt said that math is fairly basic.
Take the average number of bytes for each record, times the number of records per week, times 26 weeks.
Repeat for each index on the table and sum up the data. That will give you a rough number for that table.
Now repeat for each table in your database.
If you have a larger row size and tons of records, you may want to include the page size in your math as this will account for the waisted space in the page.
Take the average number of bytes per record and divide that into the number of bytes per page (8192 is default). Round that number down to the next lowest integer. This will tell you how many records you can store in one page. Divide the number of records by the number of records per page to get the number of pages. Then multiply that number by 8k to get the amount of space that will be used.
It will look something like this.
Average Record Size of 115 bytes.
Average Number of Records per day of 300,000.
We can fit 71.23478... records per page so we round that down to 71 records per page.
300,000 / 71 = 4225.35 (Rounded to 4226 pages)
4226 * 7 (days) * 26 (weeks) = 769,132 pages
769,132 * 8k = 6,153,056k (6,008.8 Megs)
If you do the more basic math you get 5,988.1 Megs for the table, so there is a small difference. As time goes on this difference would get larger.
Then repeat this for each index you need to create.
Denny
MCSA (2003) / MCDBA (SQL 2000)
--Anything is possible. All it takes is a little research. (Me)