Microsoft's documentation on the varchar(max) data type:
"Variable-length, non-Unicode string data. . . max indicates that the maximum storage size is 2^31-1 bytes (2 GB). The storage size is the actual length of the data entered + 2 bytes"
http://technet.microsoft.com/en-us/library/ms176089.aspx
I thought 2^31 bytes = 2 GB, not that 2^31-1 bytes = 2 GB. Am I wrong on this point?
Two of the bytes are reserved for column overhead, so the question becomes:
How many characters will the data type store?
a) 2^31-3 = 2,147,483,645 bytes = 2,147,483,645 Characters
b) 2^31-2 = 2,147,483,646 bytes = 2,147,483,646 Characters