Je veux exécuter EXEC master..xp_cmdshell @bcpquery
Mais j'obtiens l'erreur suivante:
SQL Server a bloqué l'accès à la procédure «sys.xp_cmdshell» du composant «xp_cmdshell» car ce composant est désactivé dans le cadre de la configuration de sécurité de ce serveur. Un administrateur système peut activer l'utilisation de «xp_cmdshell» à l'aide de sp_configure. Pour plus d'informations sur l'activation de «xp_cmdshell», consultez «Configuration de la zone de surface» dans la documentation en ligne de SQL Server.
Existe-t-il un moyen d'activer cela ou d'exécuter quelque chose avant d'activer la fonctionnalité?
Comment le résoudre?
la source
Vous pouvez également masquer à nouveau l'option avancée après la reconfiguration:
la source
Serveur de clic droit -> Facettes -> Configuration de la zone de surface -> XPCmshellEnbled -> true
la source
Comme indiqué dans d'autres réponses, l'astuce (dans SQL 2005 ou version ultérieure) consiste à modifier les paramètres de configuration globale pour
show advanced options
etxp_cmdshell
vers1
, dans cet ordre.De plus, si vous souhaitez conserver les valeurs précédentes, vous pouvez les lire en
sys.configurations
premier, puis les appliquer dans l'ordre inverse à la fin. Nous pouvons également éviter lesreconfigure
appels inutiles :Notez que cela repose sur SQL Server version 2005 ou ultérieure (la question d'origine était pour 2008).
la source
Bien que la réponse acceptée fonctionne la plupart du temps, j'ai rencontré (je ne sais toujours pas pourquoi) certains cas qui ne le sont pas. Une légère modification de la requête en utilisant
WITH OVERRIDE
inRECONFIGURE
donne la solutionLe résultat attendu est
la source
Même si cette question est résolue, je veux ajouter mon conseil à ce sujet .... car en tant que développeur, j'ai ignoré.
Il est important de savoir que nous parlons de MSSQL xp_cmdshell activé est critique pour la sécurité, comme indiqué dans le message d'avertissement:
Laisser le service activé est une sorte de faiblesse , qui par exemple dans une application Web pourrait refléter et exécuter des commandes SQL d'un attaquant. Le populaire CWE-89 :
SQL Injection
cela pourrait être une faiblesse de notre logiciel, et donc ce type de scénarios pourrait ouvrir la voie à d'éventuelles attaques, telles que CAPEC-108 :Command Line Execution through SQL Injection
J'espère avoir fait quelque chose d'agréable, nous les développeurs et les ingénieurs faisons les choses avec conscience et nous serons plus en sécurité!
la source
Pour moi, le seul moyen sur SQL 2008 R2 était le suivant:
la source
Vous pouvez le faire en utilisant SQLcmd. vous avez exécuté la commande suivante.
la source