Ошибка удаления всех таблиц «УДАЛИТЬ не удалось, поскольку следующие параметры SET имеют неверные настройки:« QUOTED_IDENTIFIER »» - PullRequest
27 голосов
/ 05 декабря 2011

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

-- Disable all constraints
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

-- Disable all triggers 
EXEC EnableAllTriggers @Enable = 0

-- Delete data in all tables
EXEC sp_MSForEachTable 'DELETE FROM ?'

-- Dnable all constraints
EXEC sp_MSForEachTable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'

-- Reseed identity columns
EXEC sp_MSForEachTable 'DBCC CHECKIDENT (''?'', RESEED, 0)'

-- Enable all triggers
EXEC EnableAllTriggers @Enable = 1

Когда он попадает в строку DELETE, я получаю эту ошибку для нескольких таблиц:

УДАЛИТЬ не удалось, поскольку следующие параметры SET имеют неправильные настройки: 'QUOTED_IDENTIFIER'. Убедитесь, что параметры SET верны для использования с индексированными представлениями и / или индексами для вычисляемых столбцов и / или отфильтрованных индексов и / или уведомлений о запросах, и / или методов типа данных XML, и / или операций с пространственным индексом.

У меня нет никаких индексированных представлений, все внешние ключи и триггеры отключены, поэтому я не знаю, что вызывает эту ошибку. Есть идеи?

1 Ответ

52 голосов
/ 05 декабря 2011

Добавьте параметры SET к вызову удаления.

Они по-прежнему применяются к другим элементам, упомянутым в ошибке, даже если вы отключили FK.

Это обойдет любые сохраненные настройки или параметры среды

Редактировать, после комментария

EXEC sp_MSForEachTable 'SET QUOTED_IDENTIFIER ON; DELETE FROM ?'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...