SQL Server - Включение и выключение цитируемого идентификатора и Getdate () - PullRequest
4 голосов
/ 05 мая 2011

У меня проблема с моим скриптом SQL , пожалуйста, помогите мне.

Ex:

У меня есть вставка:

INSERT INTO CUSTOMER (Code, Date) VALUES (1, GETDATE());

Когда я выполняю эту вставку, повторно запускается следующее сообщение:

"Msg 1934, Уровень 16, Состояние 1, Сервер HENRIQUE-PC, строка 5 INSERT не удалось потому что следующие опции SET имеют неверные настройки: 'ЗАКАЗАНО _IDENTIFIER '. Убедитесь, что параметры SET верны для использования с индексированные представления и / или индексы на вычисляемые столбцы и / или отфильтрованные индексы и / или уведомления о запросах и / или методы типа данных XML и / или операции с пространственным индексом. ".

Теперь, когда я использовал SET QUOTED_IDENTIFIER ON, моя вставка выполнена успешно.

Ex:

SET QUOTED_IDENTIFIER OFF
GO

INSERT INTO CUSTOMER (Code, Date) VALUES (1, GETDATE());

SET QUOTED_IDENTIFIER ON
GO

(затронут 1 ряд)

Какие отношения между GETDATE() и QUOTED IDENTIFIER?

Почему мне нужно использовать ИДЕНТИФИКАТОР В ТЕЧЕНИИ в этом случае?

Я верю, что это из-за getdate. Почему?

Спасибо.

Энрике Мелисио

1 Ответ

3 голосов
/ 05 мая 2011

Henrique,

Причина, по которой вы получаете эту ошибку, не связана с GETDATE(), она связана с индексами столбцов из вашей таблицы CUSTOMER Этот бит из документа SET Statements (Transact-SQL) SQL Server 2008 объясняет проблему более подробно:

Когда вы создаете и манипулируете индексы на вычисляемых столбцах или индексированные просмотры, настройки SET ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING и ANSI_WARNINGS должны быть включен. Опция NUMERIC_ROUNDABORT должен быть установлен в OFF.

Если какой-либо из этих параметров не установлен до требуемых значений, ВСТАВИТЬ, ОБНОВЛЕНИЕ, УДАЛЕНИЕ, DBCC CHECKDB и DBCC ПРОВЕРЯЕМЫЕ действия над индексированными представлениями или таблицы с индексами по расчетам столбцы не удастся. SQL Server будет поднять ошибку, перечислив все варианты которые неправильно установлены. Также SQL Сервер будет обрабатывать операторы SELECT на этих таблицах или индексированных представлениях, как будто индексы на вычисляемых столбцах или на виды не существуют.

...