Which data type should I use to store a 11 digit number
I would suggest storing the number as a BIGINT, and simply displaying the number the way you want it.

DECLARE @Num BIGINT;

SET @Num = 2421402015;

SELECT CONVERT(VARCHAR(11), REPLICATE('0', 11 - LEN(@Num))) 
    + CONVERT(VARCHAR(11), @Num);


As pointed out by Aaron Bertrand in his comment, it is better performance-wise to not calculate the length of the required string of zeros, and simply truncate the string:

SELECT RIGHT(REPLICATE('0', 11) + CONVERT(VARCHAR(11), @Num), 11);


For your sample number, the concatenation would result in '000000000002421402015', which would then be right-truncated into 11 digits resulting in:

02421402015


In fact, as srutzky pointed out, this can be further optimized to:

SELECT RIGHT('00000000000' + CONVERT(VARCHAR(11), @Num), 11);


If users will pass in values with leading zeros that need to get matched in a WHERE clause,  I would convert the search term to an integer first, then use that in the predicate, so an index can be used.

I've written a blog post1 that details how you can store the number as an integer, while simultaneously providing an elegant method for the number to look like it's being stored in the database with leading zeros.  Check http://www.sqlserver.science/basics/how-do-i-store-a-number-with-leading-zeros/ for the details!  There are several other methods of formatting the leading zeros column, however the performance of each method varies quite drastically; the RIGHT('00000000000' + CONVERT(VARCHAR(11), @Num), 11) method looks like it's the fastest by far.



1 - My blog post was featured in the SQL PASS Community Connector News
2 - Follow up post on performance of FORMATMESSAGE() function in SQL Server 2012+