Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Непонятная ошибка.  [new]
qqq_2
Member

Откуда:
Сообщений: 50
Коллеги, добрый день.

Нужен простой скрипт по перестройке всех индексов в небольшой БД, вне зависимости от фрагментации.


Пробую вот так:
SET QUOTED_IDENTIFIER ON
exec sp_msforeachtable N'ALTER INDEX ALL ON ? REBUILD '


Но выдает ошибкучерез некоторое время:

Ошибка ALTER INDEX. Следующие параметры SET содержат неверные значения: "QUOTED_IDENTIFIER". Убедитесь, что параметры SET содержат значения, подходящие для использования с индексированные представления, индексы для вычисляемых столбцов, отфильтрованные индексы и/или уведомления о запросах, методы типов данных XML и/или операции с пространственными индексами.


SET QUOTED_IDENTIFIER OFF
exec sp_msforeachtable N'ALTER INDEX ALL ON ? REBUILD '



Ошибка та же.



Выполняю результат этого запроса:

SELECT 'ALTER INDEX ALL ON '+name+' REBUILD ' FROM sys.tables



Ошибки нет.






Помогите разобраться из-за чего возникает эта ошибка и как от нее избавитбся?
9 дек 19, 18:48    [22036186]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная ошибка.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
qqq_2,

всё уже до вас придумали: https://ola.hallengren.com.
9 дек 19, 18:56    [22036196]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная ошибка.  [new]
qqq_2
Member

Откуда:
Сообщений: 50
Владислав Колосов
qqq_2,

всё уже до вас придумали: https://ola.hallengren.com.


MP выдает такую же ошибку.


dbcc checkdb ошибок не выдает.
9 дек 19, 19:00    [22036201]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная ошибка.  [new]
qqq_2
Member

Откуда:
Сообщений: 50
Как бороться с ошибкой?
10 дек 19, 10:20    [22036573]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная ошибка.  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
qqq_2,

exec sp_msforeachtable N'set QUOTED_IDENTIFIER on; ALTER INDEX ALL ON ? REBUILD '
10 дек 19, 10:28    [22036585]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная ошибка.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
Убедитесь, что параметры SET содержат значения, подходящие для использования с индексированные представления, индексы для вычисляемых столбцов, отфильтрованные индексы и/или уведомления о запросах, методы типов данных XML и/или операции с пространственными индексами.


select oo.name, oo.type_desc
from sys.sql_modules mm
inner join sys.objects oo on mm.object_id = oo.object_id
where mm.uses_quoted_identifier = 0
10 дек 19, 13:20    [22036807]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная ошибка.  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Владислав Колосов
Убедитесь, что параметры SET содержат значения, подходящие для использования с индексированные представления, индексы для вычисляемых столбцов, отфильтрованные индексы и/или уведомления о запросах, методы типов данных XML и/или операции с пространственными индексами.


select oo.name, oo.type_desc
from sys.sql_modules mm
inner join sys.objects oo on mm.object_id = oo.object_id
where mm.uses_quoted_identifier = 0

sys.sql_modules тут ни при чем, Shakill уже показал в чем ошибка:
не в своем внешнем execution context надо сет менять,
а в том динамическом, где выполняется alter index
10 дек 19, 13:36    [22036845]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная ошибка.  [new]
qqq_2
Member

Откуда:
Сообщений: 50
Shakill, Yasha123,

я не знал что sp_msforeachtable создает отдельную сессию для каждой таблицы.

Большое спасибо!
10 дек 19, 14:00    [22036887]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная ошибка.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
qqq_2,

Создает не sp_msforeachtable, а динамический запрос, который формирует эта процедура. Это характерно для любого динамического запроса.

Запрос, который я предоставил, отображает все программные объекты, у которых QUOTED_IDENTIFIER = OFF.
10 дек 19, 15:44    [22037023]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить