Почему QUOTED_IDENTIFIER должен быть включен для всей базы данных, если у вас есть индексированное представление? - PullRequest
1 голос
/ 07 октября 2010

Вчера я добавил несколько индексов для представления в моей базе данных MSSQL 2008. После этого кажется, что все процедуры хранилища должны выполняться с установленным значением QUOTED_IDENTIFIER, даже те, которые не используют рассматриваемое представление.

Почему это так? Это то, что я могу настроить на БД или мне нужно обновить все мои хранимые процедуры, чтобы установить для QUOTED_IDENTIFIER значение ON? Я думаю, что это довольно странно, что это требуется для хранимых процедур, не использующих представление.

1 Ответ

5 голосов
/ 07 октября 2010

Относятся ли эти хранимые процедуры к базовой таблице (ам), на которой основано представление? Цитировать Создание индексированных представлений :

После создания кластерного индекса любое соединение, которое пытается изменить базовые данные для представления также должны иметь те же параметры настройки, необходимые создать индекс. SQL Server генерирует ошибку и откатывает любую Оператор INSERT, UPDATE или DELETE что повлияет на набор результатов посмотреть, если соединение выполняет утверждение не имеет правильного Настройки параметров. Для дополнительной информации, см. параметры SET, влияющие на результаты.

И, если подумать, это очевидно: вы потенциально будете обновлять содержимое представления всякий раз, когда вы касаетесь этих базовых таблиц, и поэтому вы наследуете те же обязанности, что и при создании индекса.

Можно установить значения по умолчанию на несколько уровней :

  • Любое приложение может явно переопределить любые настройки по умолчанию, выполнив инструкцию SET после подключения к серверу. Оператор SET переопределяет все предыдущие настройки и может использоваться для динамического включения и выключения параметров во время работы приложения. Настройки параметров применимы только к текущему сеансу подключения.

  • Приложения OLE DB и ODBC могут указывать настройки параметров, которые действуют во время подключения, путем задания параметров параметров в строках подключения. Настройки параметров применимы только к текущему сеансу подключения.

  • Параметры SET, указанные для источника данных ODBC для SQL Server, с помощью приложения ODBC на панели управления или функции ODBC SQLConfigDataSource.

  • Настройки по умолчанию для базы данных. Вы можете указать эти значения с помощью ALTER DATABASE или Обозревателя объектов в SQL Server Management Studio.

  • Настройки по умолчанию для сервера. Вы можете указать эти значения с помощью sp_configure или Object Explorer в SQL Server Management Studio, чтобы задать параметр конфигурации сервера с именем user options.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...