Ich möchte ausführen EXEC master..xp_cmdshell @bcpquery
Aber ich bekomme folgenden Fehler:
SQL Server hat den Zugriff auf die Prozedur 'sys.xp_cmdshell' der Komponente 'xp_cmdshell' blockiert, da diese Komponente im Rahmen der Sicherheitskonfiguration für diesen Server deaktiviert ist. Ein Systemadministrator kann die Verwendung von 'xp_cmdshell' mithilfe von sp_configure aktivieren. Weitere Informationen zum Aktivieren von 'xp_cmdshell' finden Sie unter "Oberflächenkonfiguration" in den SQL Server-Onlinedokumenten.
Gibt es eine Möglichkeit, dies zu aktivieren oder etwas auszuführen, bevor die Funktion aktiviert wird?
Wie man es löst?
quelle
Sie können die erweiterte Option nach der Neukonfiguration auch wieder ausblenden:
quelle
Klicken Sie mit der rechten Maustaste auf Server -> Facetten -> Oberflächenkonfiguration -> XPCmshellEnbled -> true
quelle
Wie in anderen Antworten aufgelistet, ist der Trick (in SQL 2005 oder später) die globalen Konfigurationseinstellungen zu ändern
show advanced options
undxp_cmdshell
zu1
in dieser Reihenfolge.Wenn Sie die vorherigen Werte beibehalten möchten, können Sie sie
sys.configurations
zuerst lesen und am Ende in umgekehrter Reihenfolge anwenden. Wir können auch unnötigereconfigure
Anrufe vermeiden :Beachten Sie, dass dies auf SQL Server Version 2005 oder höher beruht (ursprüngliche Frage war für 2008).
quelle
Während die akzeptierte Antwort die meiste Zeit funktioniert, bin ich auf einige Fälle gestoßen (weiß immer noch nicht warum), die dies nicht tun. Eine geringfügige Änderung der Abfrage mithilfe von
WITH OVERRIDE
inRECONFIGURE
ergibt die LösungDie erwartete Ausgabe ist
quelle
Auch wenn diese Frage gelöst ist, möchte ich meinen Rat dazu hinzufügen ... da ich als Entwickler ignoriert habe.
Es ist wichtig zu wissen, dass es sich um MSSQL handelt. Xp_cmdshell aktiviert ist für die Sicherheit von entscheidender Bedeutung, wie in der Warnmeldung angegeben:
Das Aktivieren des Dienstes ist eine Art Schwachstelle , die beispielsweise in einer Web-App die SQL-Befehle eines Angreifers widerspiegeln und ausführen kann. Das beliebte CWE-89 :
SQL Injection
Es könnte eine Schwäche in unserer Software sein, und daher könnten solche Szenarien den Weg für mögliche Angriffe wie CAPEC-108 ebnen :Command Line Execution through SQL Injection
Ich hoffe, etwas Angenehmes getan zu haben, wir Entwickler und Ingenieure tun Dinge mit Bewusstsein und wir werden sicherer sein!
quelle
Für mich war der einzige Weg unter SQL 2008 R2 folgender:
quelle
Sie können SQLcmd verwenden. Sie haben den folgenden Befehl ausgeführt.
quelle