Anzahl der character in SQL server varchar (max)?

Microsoft-Dokumentation zum Varchar (max) datatyp:

"Variable-Länge, Nicht-Unicode-String-data … max zeigt an, dass die maximale memorygröße 2 ^ 31-1 Bytes (2 GB) ist . Die memorygröße ist die tatsächliche Länge der eingegebenen data + 2 Bytes"

http://technet.microsoft.com/en-us/library/ms176089.aspx

Ich dachte 2 ^ 31 Bytes = 2 GB, nicht das 2 ^ 31-1 Bytes = 2 GB. Bin ich an diesem Punkt falsch?

Zwei der Bytes sind für Spaltenaufwand reserviert, also wird die Frage:

Wie viele character wird der datatyp speichern?
a) 2 ^ 31-3 = 2,147,483,645 Bytes = 2,147,483,645 character
b) 2 ^ 31-2 = 2,147,483,646 Bytes = 2,147,483,646 character

Die Zahl 2 ^ 31-1 ist 0x7fffffff in hex. Es ist die größtmögliche positive 32-Bit-Nummer auf einer Doppel-Kompliment-Maschine (wie die x86 und fast alles andere).

Die Dokumentation sagt Ihnen, dass dies die maximale memorygröße ist, die die Länge der data plus 2 Bytes halten muss. Dies bedeutet, dass die maximale datagröße 2 ^ 31-1-2 oder 2.147.483.645 (0x7FFFFFFD) beträgt.