Frage

Ich habe ein asp.net Website-Projekt geerbt, die derzeit SQL Server 2000 als Backend ausgeführt wird.

Ich habe auf einer lokalen Kopie der db einige Datenbanken Änderungen wurde dabei mithilfe von SQL Server 2005 Express. Ich habe eine Tabelle mit varchar(max) Spalten erstellen. Sie werden auf die gespeicherten Schnipsel von XHTML verwendet, die von beliebiger Länge sind.

Beim Durchsuchen um auf Stackoverflow ich auf diese kam: Gibt es irgendwelche Nachteile zu immer mit nvarchar (MAX)?

User mattruma sagt er die "harte Tour" fand heraus, über varchar(max) auf SQL Server 2000 verwendet wird.

Was soll ich statt varchar(max) gegeben verwenden, dass die Live-Datenbank läuft auf SQL Server 2000?

Vielen Dank im Voraus für jede Hilfe!

War es hilfreich?

Lösung

Es klingt wie die varchar(MAX) Einschränkungen ein strittiger Punkt sind, ob Ihr Live-DB SQL Server 2000 ist, die sie nicht unterstützt. Wenn Sie mehr als 8 K Zeichen haben Sie zu speichern sind ziemlich viel mit der einzigen anderen Möglichkeit gelassen, eine TEXT Spalte. Doch Vorsicht, dass TEXT Spalte zu vielen Einschränkungen.

Zum Beispiel können Sie auf sie nicht leicht sortieren oder eine Gruppe, noch können Sie vergleichen sie für die Gleichwertigkeit mit anderen Spalten. Das heißt, Sie nicht Select * from mytable where Mytext1 = mytext2 sagen kann.

Weitere relevante Anliegen:

  • Ich würde vorschlagen, einen NText oder NVarchar Spalt unabhängig von der Art und Weise verwenden Sie Unicode gehen zu unterstützen.
  • Wenn die Tabelle eine Menge anderer Spalten hat und die varchar(8000) Spalte ist wahrscheinlich häufig fast voll ist, kann es zu Problemen mit der Zeilengrenze von 8K hat. Beachten Sie dies auch.

Andere Tipps

VARCHAR(Max) wurde in SQL Server 2005 eingeführt und wird nicht auf SQL Server arbeiten 2000. Sie müssen entweder VARCHAR(8000) verwenden unter der Annahme, dass groß genug sein wird. Andernfalls müssen Sie TEXT verwenden

Bearbeiten

Auch wenn man im Auge behalten, um VARCHAR(8000) schalt es eine Grenze gibt, die eine einzelne Zeile kann nicht mehr als 8060 Bytes hat. Wenn Sie also eine varchar(8000) Tabelle füllen und haben eine Reihe von anderen großen Spalten wird eine Fehlermeldung angezeigt. Dies ist, wo Text Spiel kommt.

Text hat Leistung Implikation, weil standardmäßig in einem separaten Ort gespeichert ist, und sie halten einen Zeiger in einer Tabelle. Es gibt eine Reihe Option, die dieses Verhalten ändert, so dass Texttypen in der Tabelle gehalten werden, bis sie eine bestimmte Größe erreichen. Wenn Sie meist kleine Blobs haben möchten Sie vielleicht, dies zu ermöglichen.

Verwenden Sie eine TEXT-Spalte.

Dies ist abhängig von Ihren Bedürfnissen. Sie können eine Spalte TEXT anstelle von VARCHAR (MAX) verwenden, aber Sie müssen sicher sein, dass Ihre Implementierung nicht auf diesem Gebiet zu suchen braucht, wie Sie nicht wie Vergleiche auf TEXT und NTEXT Felder tun können.

Wenn Sie sich auf 8000 Zeichen begrenzen, würde ich eine VARCHAR (8000) Spalte verwenden, um die Informationen zu speichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top