Frank (no reg): Eintrag wird mit Leerzeichen aufgefüllt

Beitrag lesen

Hi,

wie es innen drin aussieht? Also wie SQL Server Daten physikalisch speichert?

-> in Pages à 8192 byte (wobei davon nur 8096 Byte übrigbleiben
aufgrund von Headerdaten)

-> ein Datensatz kann also maximal 8096 Byte umfassen, da Datensätze
nicht über mehrere Pages verteilt werden können

-> es werden zuerst die Daten aus Spalten fixer Datentypen (also auch char(50)) abgelegt bevor am Ende die variablen typen (varchar, varbinary etc) angeschlossen werden.

-> da in den Headerinformationen eines Datensatzes natürlich auch enthalten sein muss, welche spalte wann beginnt, ist es auch nur logisch, das wirklich die 50 byte reserviert werden, weil SQL Server dann [char] ja wie [varchar] behandeln müsste ...

Ich würde nicht von dem Auffüllen einer [char]-Spalte mit Leerzeichen als einem "unerwünschten Effekt" ausgehen. Der SQL Server Datentyp [char] ist nunmal nicht für die Verwendung variabel langer Zeichenfolgen konzipiert, dafür gibt es schließlich [varchar], was du in deinem Fall auch nehmen solltest.

Wenn eine Datenbanksoftware Datentypen wie [char] und [varchar] trennt (analog zu [binary] und [varbinary]) und dann aber in der Verwendung das typische des einen Datentyps auf den anderen anwendet, wozu macht sie dann die Unterscheidung erst ?

HTH, Ciao, Frank