Как применить операцию сразу ко всем таблицам или ко всем базам данных
Самородов Федор Анатольевич: Как применить операцию сразу ко всем таблицам или ко всем базам данных
Администраторам часто бывает необходимо перебрать все таблицы базы данных, чтобы над каждой таблицей произвести какое-то действие. Например, перестроить индексы.
Традиционно для такого перебора можно использовать курсор. Но есть способ проще - процедура sp_MSForEachTable. Ей можно передать текст команды или запроса, который будет выполнен для каждой таблицы в базе. Команда, разумеется, параметризуется - вместо вопросительного знака будет подставлено название таблицы.
Посмотрите на сигнатуру этой процедуры:
За один вызов вы можете передать ей три команды, которые будут выполнены для каждой таблицы, плюс начальное и конечное действия для всего пакета команд, а также указать условие включения таблицы в перебор. Параметр @ReplaceChar предназначен для запросов, в которых не получается использовать вопросительный знак для параметризации.
Каждая из трёх команд может содержать больше одного SQL-запроса. При написании фильтра @WhereAnd учтите, что ваша строка будет встроена внутри процедуры в более сложный запрос к системным таблицам, поэтому используйте для фильтрации столбцы из SysObjects. Например:
Имеется аналогичная процедура для перебора всех баз данных на сервере - sp_MSForEachDB:
С её помощью вы сможете выполнить однотипный набор действий над каждой базой на сервере:
Подробнее об этом Вы сможете узнать на курсах SQL Server
Ближайшие группы
Заказ добавлен в Корзину.
Для завершения оформления, пожалуйста,
перейдите в Корзину!
От какого лица вы будете оплачивать обучение?