2013-10-26 2 views
8

Я использовал MS SQL Server 2005 с Yii Framework ранее и создал таблицы и хранимые процедуры там. Но теперь я переместил свою базу данных в MS SQL Server 2008 R2. Когда я пытаюсь сохранить длинную строку длины, она дает мне ошибку для максимальной длины, тогда как я установил тип данных этого столбца как «текст» после него. заменил его «varchar (max)», но там нет решения.Идентификатор, начинающийся с ...... слишком длинный. Максимальная длина составляет 128

любезно предоставит мне решение, как решить эту проблему. Я выполняю следующий запрос:

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 

Я ищу его много, но решения, которые я нашел для C#, мне не пригодились.

Спасибо!

ответ

15

В соответствии со стандартом ANSI SQL, используются двойные кавычки (если необходимо) для идентификаторов объектов (напр. UPDATE "hotel" ...), а не как разделители строк ("Overview of Park Central ..."). SQL Server имеет такое поведение, когда QUOTED_IDENTIFIER является ON.

Редактировать 1: использование одиночных и двойных кавычек в качестве разделителей для идентификаторов объектов (в том числе псевдонимов столбцов) описано ниже:

     Delimiter Delimiter 
         for   for 
SET QUOTED_IDENTIFIER Object ID Alias ID  StringDelimiter 
ON      " or []  " or ' or [] ' 
OFF      []   " or ' or [] " or ' 
  • ON тогда двойные кавычки могут использоваться в качестве разделителя для идентификаторов объектов (включая псевдонимы столбцов), а одинарные кавычки используются в качестве разделителей для строковых литералов и/или для идентификаторов столбцов (SELECT Column1 AS 'Alias1' ....).
  • OFF тогда двойные кавычки могут использоваться в качестве разделителя для псевдонимов столбцов (SELECT Column1 AS "Alias1" ...) и в качестве разделителя для строковых литералов (SELECT "String1" AS Alias1 ...). Одиночные кавычки могут использоваться как разделитель строк и как разделитель для псевдонимов столбцов (SELECT Column1 AS Alias1 ...).

Используйте вместо одинарные кавычки:

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

Если вы не хотите, чтобы изменить двойные кавычки на одинарные добавить следующие две строки в попрошайничество сценария

SET QUOTED_IDENTIFIER OFF 
SET ANSI_NULLS ON 
+0

Нет, что не решает проблему. – Zerubbabel

Смежные вопросы