varchar (max) MS SQL Server 2000, Probleme?
-
09-09-2019 - |
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!
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
oderNVarchar
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.