MS SQL Server. Выполнение команд операционной системы

Все об администрировании Windows NT/2000/2003/2008/2012 Server (в т.ч. R2) серверов. Групповые политики, домены, безопасность и пр. То, чего не найдешь в бескрайних просторах Интернета. Решения тех проблем, которые не решаются типовыми ответами, которые можно получить в техподдержке Майкрософта - а именно: переустановить продукт или купить какой-ть другой лицензионный диск.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1503
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

MS SQL Server. Выполнение команд операционной системы

Сообщение UncleFather »

Задача:

Необходимо запустить команду операционной системы (командная оболочка Windows) (или какой-либо исполняемый файл ОС) из скрипта MS SQL Server.

Решение:

MS SQL Server позволяет выполнять команды операционной системы и возвращать результат в виде текстовых строк. Например, прямо из SQL Server можно запустить bat-файл, любую программу и вообще использовать все возможности командной строки.

Для этого используется системная хранимая процедура xp_cmdshell. Запуск этой процедуры по умолчанию запрещен. Чтобы включить эту возможность нужно выполнить следующий код:

Код: Выделить всё

-- Включение разрешения изменения расширенных опций.
EXEC sp_configure 'show advanced options', 1
GO
-- Обновление текущих настроек расширенных опций.
RECONFIGURE
GO
-- Включение возможности запуска внешних программ.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Обновление текущих настроек для запуска внешних программ.
RECONFIGURE
GO

Теперь для запуска bat-файла достаточно выполнить следующую команду:

Код: Выделить всё

EXEC master..xp_cmdshell 'test.bat'

Или эту, если необходимо подавить вывод результатов:

Код: Выделить всё

EXEC master..xp_cmdshell 'test.bat', NO_OUTPUT

Источник


Пример 1
Чтобы подключить сетевой диск, читаем здесь.


Пример 2

Чтобы почистить папку C:\WINDOWS\Temp\, выполняем скрипт:

Код: Выделить всё

-- Включение разрешения изменения расширенных опций.
EXEC sp_configure 'show advanced options', 1
GO
-- Обновление текущих настроек расширенных опций.
RECONFIGURE
GO
-- Включение возможности запуска внешних программ.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Обновление текущих настроек для запуска внешних программ.
RECONFIGURE
GO

-- Теперь для запуска bat-файла достаточно выполнить следующую команду:

-- EXEC master..xp_cmdshell 'for /R "C:\WINDOWS\Temp\" %F in (.) DO IF NOT "%F"=="C:\WINDOWS\Temp\." (RD /S /Q "%F") ELSE (Del /F /S /Q "C:\WINDOWS\Temp\*")'

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение