Führen Sie SQL Server 2012 als Administrator aus, und das Problem wird behoben.
Netto-Stopp <service> Systemfehler 5 Zugriff verweigert </service>
Ab SQL Server 2012 versuche ich Folgendes:
DECLARE @COMMAND nvarchar(4000) SET @COMMAND = 'net stop <servicename>' exec master.dbo.xp_cmdshell @COMMAND
Ich bekomme Systemfehler 5 und Zugriff als Antwort verweigert
Das Dienstkonto (geprüft mit whoami
) wird zu den Administratoren hinzugefügt. Was kann sonst noch falsch sein?
2 Antworten auf die Frage
Erlauben Sie dem Benutzer ohne xp_cmdshell
Systemadministrator die Ausführung von SSMS
Ich half bei der Behebung eines Problems, bei dem wir einem App-Entwickler Zugriff gewähren mussten, um xp_cmdshell
innerhalb einer SSMS-Sitzung ausgeführt zu werden, anstatt " Ausführen als " von SQL Agent Job auf einem nicht kritischen Entwicklungsserver auszuführen, ohne ihn zu einem Sysadmin in der SQL Server-Instanz zu machen.
Was wir gemacht haben
Hinweis: Das Domänenbenutzerkonto kann durch ein Arbeitsgruppenkonto, ein lokales Computerkonto usw. ersetzt werden.
Wichtig: Sie müssen das Risiko verstehen, dass Benutzer in Ihrer Umgebung Befehle auf Betriebssystemebene ausführen dürfen, und Sie sollten diese Berechtigungsstufe xp_cmdshell
nur solchen Personen erteilen, die mit dieser Sicherheitsstufe mit der Proxy- Methode vertrauenswürdig genug sind .
Sie haben ein neues Domänenbenutzerkonto mit einem sicheren Kennwort erstellt und den Benutzernamen und das Kennwort zur Kenntnis genommen. Stellen Sie sicher, dass das Konto aktiviert wurde und das Kennwort nie abläuft.
Erstellt ein neues SQL Server-Login, das an das neue Domänenbenutzerkonto gebunden ist, das wir erstellt haben.
Erstellt einen neuen Proxy-Berechtigungsnachweis, der an das Domänenbenutzerkonto gebunden ist.
EXEC sp_xp_cmdshell_proxy_account '<Domain>\<NewUser>', '<password>' -- you have to type actual password
Erlaubt, dass der SQL Server-Login den expliziten
EXECUTE
Zugriff auf die vom System angegebene gespeicherte proc von der angegebenenMaster
DB aus erweitertsys.xp_cmdshell
.--see who all has execute access to xp_cmdshell Use master EXEC sp_helprotect 'xp_cmdshell' -- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1 RECONFIGURE GO -- Enable the xp_cmdshell procedure EXEC sp_configure 'xp_cmdshell', 1 RECONFIGURE GO -- Grant execute permissions to account GRANT EXECUTE ON xp_cmdshell TO [<Domain>\<NewUser>]
Erteilen Sie der Person, die die Berechtigung zum
EXECUTE AS
Identitätswechsel für die neue SQL Server-Anmeldung verwendet .GRANT IMPERSONATE ON LOGIN::[<Domain>\<NewUser>] TO [<Domain>\<UserGrantingExecuteAsUser>]
Führen Sie nun den Befehl mit EXECUTE AS LOGIN aus und übergeben Sie den
net stop
Befehl an diexp_cmdshell
gespeicherte Prozedur. Das Sicherheitsprinzip, wie es in Schritt 5 oben in aufgeführt<Domain>\<UserGrantingExecuteAsUser>
ist, sollte das der Person sein, auf der Sie SSMS als sicherheitskontextabhängig für diese Aufgabe ausführen.EXECUTE AS LOGIN = '<Domain>\<NewUser>' DECLARE @COMMAND nvarchar(4000) SET @COMMAND = 'net stop <servicename>' EXEC xp_cmdshell @COMMAND REVERT
Weitere Ressourcen
Verwandte Probleme
-
6
Welche zsh-Funktionen verwenden Sie?
-
5
Transparente Eingabeaufforderung in Vista?
-
4
Verwenden Sie den Windows-Aktenkoffer von der Befehlszeile aus
-
4
Warum sind einige Befehle nicht vorhanden?
-
11
Gibt es eine einfache Möglichkeit, MP3-Dateien zu teilen?
-
2
Wie kann ich OSX Terminal.app dazu bringen, den Vollbildmodus zu öffnen und nicht zu kaskadieren?
-
4
Remote-Ordner unter Linux synchronisieren
-
6
Vollbild-Vista-Eingabeaufforderung oder Ersatz
-
6
Guter PowerShell-Leitfaden, der durch fortgeschrittene Verwendung Einstieg leistet
-
3
Planen Sie einen Job von der Windows-Befehlszeile aus?