Почему XP cmdshell не работает в SQL Server 2012? [дубликат]

Возможные Дубликаты:
включить’ xp_cmdshell ' SQL Server

когда я запускаю xp_cmdshell команда в SQL Server 2012, я получаю следующее сообщение:

SQL Server заблокировал доступ к процедуре sys.xp_cmdshell "компонента " xp_cmdshell" потому что этот компонент выключен как часть конфигурации безопасности для этого сервера. Системный администратор может включить использование "xp_cmdshell" от с помощью процедуры sp_configure. Дополнительные сведения об активации процедуры xp_cmdshell', поиск "xp_cmdshell" в SQL Server книги в Интернете.

но в SQL Server 2000 этот запрос выполняется успешно.

2 ответов


Это было отключено из коробки, начиная с SQL Server 2005, когда они представили Средство Настройки Контактной Зоны, чтобы сделать SQL Server более безопасным по умолчанию. Этот инструмент с тех пор был удален, но вы все еще можете контролировать поведение с помощью sp_configure. пример показан на MSDN:

-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

расказывает об этом много лет назад.)

причина в том, что это потенциальная дыра в безопасности. Если разрешить SQL Server выполнять xp_cmdshell, тогда они теоретически могут отправить любой команда операционной системы там, минуя любую безопасность, которую вы думали, что у вас есть. Это особенно проблематично, когда учетная запись службы SQL Server и/или учетная запись прокси-сервера были повышены до sysadmin или других уровней, потому что это проще, чем явно определять только точные вещи, которые они должны быть в состоянии сделать.

вместо включения это и отключить его для поддержки взаимодействия командной строки, популярный способ выставить функциональность операционной системы, все еще имея некоторый контроль над безопасностью, чтобы реализовать функциональность уровня ОС, вам нужно с помощью SQL-CLR. Вот хорошая отправная точка для доступа к файловой системе с помощью CLR (однако, если вы ищете вокруг, вы найдете гораздо более современные и исчерпывающие подходы).


это отключено для sql server 2012. Но в sql server 2008 можно выполнить следующую команду..

EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE