Уважаемые слушатели! Обращаем ваше внимание, что 01.05.2024 и 09.05.2024 у нас выходные дни. Вы можете оставить сообщение в чате, мы обязательно ответим!
Уважаемые слушатели! Теперь для вас работает номер технической поддержки 8 (800) 444-28-35 с 9:00 до 21:00

Частным лицам +7 (495) 232-32-16

Слушателям
от организации
+7 (495) 780-48-44

+7 (495) 780-48-49

Как применить операцию сразу ко всем таблицам или ко всем базам данных

Самородов Федор Анатольевич: Как применить операцию сразу ко всем таблицам или ко всем базам данных

СФА

Администраторам часто бывает необходимо перебрать все таблицы базы данных, чтобы над каждой таблицей произвести какое-то действие. Например, перестроить индексы.

Традиционно для такого перебора можно использовать курсор. Но есть способ проще - процедура sp_MSForEachTable. Ей можно передать текст команды или запроса, который будет выполнен для каждой таблицы в базе. Команда, разумеется, параметризуется - вместо вопросительного знака будет подставлено название таблицы.

sp_MSForEachTable

Посмотрите на сигнатуру этой процедуры:

Параметры  sp_MSForEachTable

За один вызов вы можете передать ей три команды, которые будут выполнены для каждой таблицы, плюс начальное и конечное действия для всего пакета команд, а также указать условие включения таблицы в перебор. Параметр @ReplaceChar предназначен для запросов, в которых не получается использовать вопросительный знак для параметризации.

Механизм работы sp_MSForEachTable

Каждая из трёх команд может содержать больше одного SQL-запроса. При написании фильтра @WhereAnd учтите, что ваша строка будет встроена внутри процедуры в более сложный запрос к системным таблицам, поэтому используйте для фильтрации столбцы из SysObjects. Например:

Пример использования sp_MSForEachTable

Имеется аналогичная процедура для перебора всех баз данных на сервере - sp_MSForEachDB:

sp_MSForEachDB

С её помощью вы сможете выполнить однотипный набор действий над каждой базой на сервере:

Перебор баз данных при помощи sp_MSForEachDB

Подробнее об этом Вы сможете узнать на курсах SQL Server

Ближайшие группы

envelope

Спасибо! Вам на e-mail отправлено письмо со ссылкой для подтверждения

Если письмо не пришло, поищите его в папке со спамом или повторите подписку

email-checked.png

Вы подписались на рассылку

Как будет оформлено обучение?

Оплачивать будет:

Спасибо за обращение! Ваш менеджер свяжется с Вами в течение нескольких минут.