Eu quero executar EXEC master..xp_cmdshell @bcpquery
Mas estou recebendo o seguinte erro:
O SQL Server bloqueou o acesso ao procedimento 'sys.xp_cmdshell' do componente 'xp_cmdshell' porque esse componente está desativado como parte da configuração de segurança deste servidor. Um administrador do sistema pode ativar o uso de 'xp_cmdshell' usando sp_configure. Para obter mais informações sobre como habilitar 'xp_cmdshell', consulte "Configuração da área de superfície" nos Manuais Online do SQL Server.
Existe alguma maneira de ativar isso ou executar algo antes de ativar o recurso?
Como resolver isso?
sql-server-2008
edgarmtze
fonte
fonte
Você também pode ocultar novamente a opção avançada após reconfigurar:
fonte
Clique com o botão direito do mouse em servidor -> Facetas -> Configuração da área de superfície -> XPCmshellEnbled -> true
fonte
Conforme listado em outras respostas, o truque (no SQL 2005 ou posterior) é alterar as configurações globais de
show advanced options
exp_cmdshell
para1
, nessa ordem.Além disso, se você deseja preservar os valores anteriores, pode lê-los
sys.configurations
primeiro e aplicá-los na ordem inversa no final. Também podemos evitarreconfigure
chamadas desnecessárias :Observe que isso depende do SQL Server versão 2005 ou posterior (a pergunta original era para 2008).
fonte
Embora a resposta aceita funcione na maioria das vezes, eu encontrei (ainda não sei o porquê) alguns casos que não são. Uma leve modificação da consulta usando o
WITH OVERRIDE
inRECONFIGURE
fornece a soluçãoA saída esperada é
fonte
Mesmo que essa pergunta tenha sido resolvida, quero adicionar meus conselhos sobre isso .... pois como desenvolvedor eu ignorei.
É importante saber que estamos falando sobre o MSSQL xp_cmdshell ativado é fundamental para a segurança, conforme indicado no aviso de mensagem:
Deixar o serviço ativado é um tipo de fraqueza que, por exemplo, em um aplicativo Web, pode refletir e executar comandos SQL de um invasor. O popular CWE-89 :
SQL Injection
pode ser uma fraqueza no nosso software e, portanto, esse tipo de cenário pode abrir caminho para possíveis ataques, como o CAPEC-108 :Command Line Execution through SQL Injection
Espero ter feito algo agradável, nós desenvolvedores e engenheiros fazemos as coisas com consciência e estaremos mais seguros!
fonte
Para mim, a única maneira no SQL 2008 R2 era esta:
fonte
Você pode fazer usando o SQLcmd. você executou o seguinte comando.
fonte