2013-10-26 9 views
8

Ich benutzte MS SQL Server 2005 mit Yii Framework früher und erstellte dort Tabellen und gespeicherte Prozeduren. Aber jetzt bin ich verschoben meine Datenbank zu MS SQL Server 2008 R2, wenn ich versuche, lange Länge zu speichern, dann gibt es mir den Fehler für maximale Länge, während ich den Datentyp dieser Spalte als "Text" nach ihm eingestellt habe ich ersetzte es durch "varchar (max)" aber keine Lösung dort.Die Kennung, die mit ...... beginnt, ist zu lang. Maximale Länge ist 128

bitte geben Sie mir eine Lösung, wie Sie dieses Problem beheben. Ich führe die folgende Abfrage aus:

update hotel 
set hotel_policy = 
    "Overview of Park Central New York - New York 
    This hotel is making improvements. 
     The property is undergoing renovations. The following areas are affected: 
     Bar/lounge 
     Business center 
     Select guestrooms 

    Every effort will be made to minimize noise and disturbance. 
    Occupying a Beaux Arts building dating to 1927, Park Central New York Hotel is within a block of famed concert venue Carnegie Hall and within a 5-minute walk of Manhattan’s world-renowned Broadway theater district. Prefer the great outdoors to the Great White Way? Central Park is just 3 blocks from the hotel. There, you can rent a rowboat at the lake, play a game of tennis, or visit the Central Park Zoo. The international boutiques and flagship department stores of Fifth Avenue start within a 10-minute walk of the hotel. For travel to sights farther afield, there are 7 subway lines located within 3 blocks of the Park Central. 
    The hotel has a snack bar for guests' convenience, and coffee and tea in the lobby. 
    Retreat to your guestroom and sink into a bed with a pillowtop mattress and down comforter and pillows. Need to check email or finish up some work? You’ll find a desk with an ergonomic chair and wireless high-speed Internet access (surcharge). Unwind with a video game (surcharge) on the flat-panel HDTV." 

where hotel_id = 1 

Ich suche es viel, aber die Lösungen, die ich für C# gefunden habe, sind für mich nicht nützlich.

Danke!

Antwort

15

Nach ANSI SQL-Standard werden doppelte Anführungszeichen verwendet (wenn notwendig) für Objekt-Identifikatoren (ex. UPDATE "hotel" ...) und nicht als String-Trennzeichen ("Overview of Park Central ..."). SQL Server hat dieses Verhalten, wenn QUOTED_IDENTIFIERON ist.

Edit 1: Die Verwendung von einzelnen und doppelten Anführungszeichen als Begrenzer für die Objektkennungen (einschließlich Spalte Aliase) wird nachstehend beschrieben:

     Delimiter Delimiter 
         for   for 
SET QUOTED_IDENTIFIER Object ID Alias ID  StringDelimiter 
ON      " or []  " or ' or [] ' 
OFF      []   " or ' or [] " or ' 
  • ON dann können doppelte Anführungszeichen als Trennzeichen für Objektbezeichner (einschließlich Spaltenaliasnamen) und einfache Anführungszeichen als Trennzeichen für Zeichenfolgenliterale und/oder für Spaltenaliasnamen (SELECT Column1 AS 'Alias1' ....) verwendet werden.
  • OFF dann können doppelte Anführungszeichen als Trennzeichen für Spalten Aliase (SELECT Column1 AS "Alias1" ...) und als Trennzeichen für Zeichenfolgenliterale (SELECT "String1" AS Alias1 ...) verwendet werden. Einfache Anführungszeichen können als Zeichenfolgebegrenzer und als Trennzeichen für Spaltenaliase verwendet werden (SELECT Column1 AS Alias1 ...).

Benutze stattdessen einfache Anführungszeichen:

update hotel 
set hotel_policy = 'Overview of Park Central ...' 
where hotel_id = 1 
3

Wenn Sie in Betteln des Skript

SET QUOTED_IDENTIFIER OFF 
SET ANSI_NULLS ON 
+0

Nein, fügen Sie folgenden zwei Zeilen nicht doppelte Anführungszeichen zu einfachen Anführungszeichen geändert werden soll, dass löst das Problem nicht. – Zerubbabel

Verwandte Themen