Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottenere l'autorizzazione di esecuzione per xp_cmdshell

Per gli utenti che non sono membri del ruolo sysadmin nell'istanza di SQL Server, è necessario eseguire le azioni seguenti per concedere l'accesso alla stored procedure estesa xp_cmdshell. Inoltre se hai dimenticato uno dei passaggi ho elencato l'errore che verrà generato.

  1. Abilita la procedura xp_cmdshell

    Msg 15281, livello 16, stato 1, procedura xp_cmdshell, riga 1SQL Server ha bloccato l'accesso alla procedura 'sys.xp_cmdshell' del componente 'xp_cmdshell' perché questo componente è disattivato come parte della configurazione di sicurezza per questo server. Un amministratore di sistema può abilitare l'utilizzo di 'xp_cmdshell' utilizzando sp_configure. Per ulteriori informazioni sull'abilitazione di 'xp_cmdshell', vedere "Configurazione dell'area di superficie" nella documentazione in linea di SQL Server.*

  2. Crea un login per l'utente non sysadmin che ha accesso pubblico al database master

    Msg 229, Livello 14, Stato 5, Procedura xp_cmdshell, Riga 1 L'autorizzazione EXECUTE è stata negata sull'oggetto 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.*

  3. Concedi l'autorizzazione EXEC sulla procedura memorizzata xp_cmdshell

    Msg 229, Livello 14, Stato 5, Procedura xp_cmdshell, Riga 1 L'autorizzazione EXECUTE è stata negata sull'oggetto 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.*

  4. Crea un account proxy con cui verrà eseguito xp_cmdshell utilizzando sp_xp_cmdshell_proxy_account

    Msg 15153, livello 16, stato 1, procedura xp_cmdshell, riga 1Le informazioni sull'account proxy xp_cmdshell non possono essere recuperate o non sono valide. Verifica che la credenziale '##xp_cmdshell_proxy_account##' esista e contenga informazioni valide.*

Sembrerebbe dal tuo errore che il passaggio 2 o 3 sia stato perso. Non ho familiarità con i cluster per sapere se c'è qualcosa di particolare in quella configurazione.