Verwenden von text- und image-Daten

Wichtiger HinweisWichtig

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen varchar(max)-, nvarchar(max)- und varbinary(max)-Datentypen. Weitere Informationen finden Sie unter Verwenden von Datentypen mit umfangreichen Werten.

Microsoft SQL Server speichert Zeichenfolgen mit mehr als 8.000 Zeichen und Binärdaten mit mehr als 8.000 Byte in speziellen Datentypen namens text und image. Unicode-Zeichenfolgen, die länger als 4.000 Zeichen sind, werden im ntext-Datentyp gespeichert.

Angenommen, eine große Textdatei (TXT) mit Kundeninformationen muss in Ihre SQL Server-Datenbank importiert werden. Diese Daten sollten als eine Einheit gespeichert werden, statt sie in mehrere Spalten Ihrer Datentabellen zu integrieren. Zu diesem Zweck können Sie eine Spalte mit dem text-Datentyp erstellen. Wenn Sie jedoch Firmenlogos, die derzeit als TIFF-Bilder (Tagged Image File Format, .tif)) gespeichert sind, mit jeweils 10 KB speichern müssen, sollten Sie eine Spalte mit dem image-Datentyp erstellen.

Falls die zu speichernden Textdaten im Unicode-Format vorliegen, verwenden Sie den ntext-Datentyp. Ein für internationale Kunden erstellter Formbrief enthält wahrscheinlich internationale Schreibweisen und Zeichen, die in den verschiedenen Sprachen üblich sind. Speichern Sie diese Daten in einer ntext-Spalte.

Jeder text- und ntext-Datenwert weist eine Sortierung auf. Sortierungen definieren Attribute, wie etwa Vergleichsregeln und die Unterscheidung auf Groß-/Kleinschreibung oder Akzentzeichen. Die Sortierungen für text-Werte geben zudem eine Codepage an, die die Bitmuster zur Darstellung der einzelnen Zeichen definiert. Jeder ntext-Wert verwendet die Unicode-Codepage, die für alle Sortierungen identisch ist. Jede Datenbank verfügt über eine Standardsortierung. Wird eine text- oder ntext-Spalte erstellt, wird ihr die Standardsortierung der Datenbank zugeordnet, es sei denn, Sie weisen ihr mithilfe der COLLATE-Klausel eine bestimmte Sortierung zu. Wenn zwei text- oder ntext-Werte mit verschiedenen Sortierungen kombiniert oder verglichen werden, bestimmen die Regeln für die Sortierungsrangfolge die für den Vorgang verwendete Sortierung.

Daten in image-Daten werden als Zeichenfolge von Bits gespeichert und nicht von SQL Server interpretiert. Jede Interpretation von Daten in einer image-Spalte muss von der Anwendung vorgenommen werden. Eine Anwendung könnte z. B. Daten in einer image-Spalte in einem BMP-, TIFF-, GIF- oder JPEG-Format speichern. Die Anwendung, die die Daten aus der image-Spalte liest, muss das Format der Daten erkennen und richtig anzeigen. Eine image-Spalte stellt lediglich den Speicherort zum Speichern des Bitstromes zur Verfügung, aus denen der Bilddatenwert besteht.

Verwenden von text in row zum Speichern von text-, ntext- und image-Werten

In der Regel sind text-, ntext- oder image-Zeichenfolgen umfangreiche Zeichen- oder Binärzeichenfolgen (maximal 2 GB), die außerhalb einer Datenzeile gespeichert werden. Die Datenzeile enthält nur einen aus 16 Byte bestehenden Textzeiger, der auf den aus internen Zeigern bestehenden Stammknoten einer Struktur verweist. Diese Zeiger ordnen die Seiten zu, in denen die Zeichenfolgenfragmente gespeichert werden.

Mit SQL Server können Sie kleine bis mittlere text-, ntext- und image-Werte in einer Datenzeile speichern und so die Geschwindigkeit der Abfragen, die auf diese Werte zugreifen, steigern.

Wenn die text-, ntext- oder image-Zeichenfolge in der Datenzeile gespeichert wird, muss SQL Server nicht auf eine separate Seite oder mehrere separate Seiten zugreifen, um die Zeichenfolge zu lesen oder zu schreiben. Dadurch ist das Lesen oder Schreiben der text-, ntext- oder image-Zeichenfolgen in Zeilen etwa so schnell wie das Lesen oder Schreiben von varchar-, nvarchar- oder varbinary-Zeichenfolgen.

Zum Speichern von text-, ntext- oder image-Zeichenfolgen in der Datenzeile aktivieren Sie die Option text in row mithilfe der gespeicherten Prozedur sp_tableoption.

sp_tableoption N'MyTable', 'text in row', 'ON';

Wahlweise können Sie einen Höchstwert von 24 bis 7.000 Byte für die Länge einer text-, ntext- und image-Zeichenfolge, die in einer Datenzeile gespeichert werden kann, angeben:

sp_tableoption N'MyTable', 'text in row', '1000';

Wenn Sie ON anstelle eines bestimmten Grenzwerts angeben, wird standardmäßig ein Grenzwert von 256 Byte verwendet. Dieser Standardwert stellt die meisten Leistungsvorteile bereit: Er ist hoch genug, um sicherzustellen, dass kleine Zeichenfolgen und die Stammknotenzeiger in den Zeilen gespeichert werden, jedoch nicht so hoch, dass die Anzahl der Zeilen pro Seite so stark reduziert wird, dass die Leistung beeinträchtigt wird.

Obwohl Sie im Allgemeinen diesen Wert nicht niedriger als 72 festlegen sollten, sollten Sie auch keinen zu hohen Wert festlegen, insbesondere für Tabellen, bei denen die meisten Anweisungen nicht auf die text-, ntext,- und image-Spalten verweisen oder bei denen mehrere text-, ntext- und image-Spalten vorhanden sind.

Mit sp_tableoption können Sie diese Option auch deaktivieren, indem Sie als Wert 'OFF' oder 0 angeben:

sp_tableoption N'MyTable', 'text in row', 'OFF';