Я хочу выполнить EXEC master..xp_cmdshell @bcpquery
Но я получаю следующую ошибку:
SQL Server заблокировал доступ к процедуре 'sys.xp_cmdshell' компонента 'xp_cmdshell', поскольку этот компонент отключен как часть конфигурации безопасности для этого сервера. Системный администратор может разрешить использование «xp_cmdshell» с помощью sp_configure. Дополнительные сведения о включении xp_cmdshell см. В разделе «Настройка поверхности» электронной документации по SQL Server.
Есть ли способ активировать это или выполнить что-то перед включением функции?
Как это решить?
sql-server-2008
edgarmtze
источник
источник
Вы также можете скрыть расширенный параметр после перенастройки:
источник
Щелкните правой кнопкой мыши по серверу -> Грани -> Конфигурация поверхности -> XPCmshellEnbled -> true
источник
Как указано в других ответах, хитрость (в SQL 2005 или более поздней версии) заключается в изменении глобальных параметров конфигурации для
show advanced options
иxp_cmdshell
к1
, в таком порядке.Кроме того, если вы хотите сохранить предыдущие значения, вы можете
sys.configurations
сначала прочитать их , а затем применить их в обратном порядке в конце. Мы также можем избежать ненужныхreconfigure
звонков:Обратите внимание, что это зависит от SQL Server версии 2005 или более поздней (оригинальный вопрос был на 2008 год).
источник
Хотя принятый ответ будет работать в большинстве случаев, я сталкивался (до сих пор не знаю, почему) с некоторыми случаями, которые не работают. Небольшая модификация запроса с использованием
WITH OVERRIDE
inRECONFIGURE
дает решениеОжидаемый результат
источник
Даже если этот вопрос решен, я хочу добавить свой совет по этому поводу .... поскольку, как разработчик, я проигнорировал.
Важно знать, что мы говорим о включенном MSSQL xp_cmdshell, который имеет решающее значение для безопасности, как указано в предупреждении:
Оставление службы включенной является своего рода слабостью , которая, например, в веб-приложении может отражать и выполнять команды SQL от злоумышленника. Популярный CWE-89 :
SQL Injection
это может быть слабым местом в нашем программном обеспечении, и поэтому сценарии такого типа могут проложить путь к возможным атакам, таким как CAPEC-108 :Command Line Execution through SQL Injection
Я надеюсь сделать что-то приятное, мы, разработчики и инженеры, делаем все с осознанием, и мы будем в безопасности!
источник
Для меня единственным способом на SQL 2008 R2 было следующее:
источник
Вы можете сделать с помощью SQLcmd. Вы выполнили следующую команду.
источник