L'account non sysadmin eseguire "xp_cmdshell" extended stored procedure in SQL Server 2000

Traduzione articoli Traduzione articoli
Identificativo articolo: 890775 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

questo articolo viene descritto come configurare un account proxy di agente di Windows a livello di Microsoft SQL Server utilizzati da accesso SQL che non Ŕ membri del ruolo predefinito del server sysadmin . Inoltre, l'articolo contiene riferimenti a ulteriori informazioni per risolvere i problemi che possono verificarsi quando si tenta di impostare un account proxy.

INTRODUZIONE

La stored procedure estesa xp_cmdshell richiama una shell di comando di Windows da all'interno di Microsoft SQL Server 2000. Quando la stored procedure estesa xp_cmdshell viene eseguita da un membro del ruolo del server sysadmin , il processo di Windows della shell di comando viene eseguito con il contesto di protezione dell'account del servizio Windows di SQL Server. Ad esempio, se SQL Server Ŕ in esecuzione in un accesso di Windows dotato di diritti amministrativi sul computer, l'utente apre un prompt dei comandi con la stored procedure estesa xp_cmdshell riceverÓ accesso a Windows come amministratore locale. Per impostazione predefinita, l'autorizzazione per eseguire la stored procedure estesa xp_cmdshell viene concessa solo ai membri del ruolo predefinito del server sysadmin . Questa autorizzazione consente a scoraggiare l'escalation dei diritti.

Quando si desidera avviare nuovi processi di Windows con un livello ridotto di diritti di, Ŕ possibile utilizzare l'account proxy Agente SQL Server per configurare un account di Windows con il livello di diritti appropriato.

Informazioni

Quando si tenta di eseguire la stored procedure xp_cmdshell estese stored procedure da un account di accesso di SQL Server non Ŕ un membro del ruolo predefinito del server sysadmin e l'account proxy Agente SQL Server Ŕ non stato impostato correttamente, Ŕ analogo messaggi di errore analoghi al seguente:
Msg 50001, livello 1, stato 50001
xpsql.cpp: errore 997 dal GetProxyAccount nella riga 499
Msg 50001, livello 1, stato 50001
xpsql.cpp: errore 317 dal GetProxyAccount nella riga 499
Msg 50001, livello 1, stato 50001
xpsql.cpp: errore 0 da GetProxyAccount nella riga 499
Msg 50001, livello 1, stato 50001
xpsql.cpp: errore 87 dal GetProxyAccount nella riga 499
Se si dispone di consentire agli utenti non sysadmin eseguire la stored procedure in SQL Server 2000 estesa xp_cmdshell , Ŕ necessario configurare l'account proxy e l'account di avvio di SQL Server sia un membro del gruppo Administrators locale. Quando SQL Server esegue i processi o i comandi per gli utenti che non sono membri del ruolo predefinito del server sysadmin, l'agente del server di SQL e la stored procedure estesa xp_cmdshell utilizzare l'account di proxy. Le credenziali di protezione Windows per l'account proxy sono memorizzate nel database i segreti dell'autoritÓ di protezione locale (LSA, Local Security Authority). Solo gli amministratori di Windows possono accedere a questa informazioni. Di conseguenza, se l'account di avvio di SQL Server non Ŕ un membro del gruppo Administrators locale, l'utente non pu˛ memorizzare o recuperare le credenziali di protezione di Windows per l'accesso come l'account proxy e la stored procedure xp_cmdshell estesa ha esito negativo di stored procedure. Per abilitare gli utenti di non di sysadmin di eseguire la stored procedure estesa xp_cmdshell , l'account di avvio di SQL Server deve appartenere al gruppo Administrators locale.

Per configurare un account proxy per SQL account di accesso server non sono membri di sysadmin corretto il ruolo di server, utilizzare uno dei metodi descritti di seguito.

Metodo 1: Utilizzare SQL Server Enterprise Manager

Configurare l'account di Windows

Per impostare l'account di Windows consente agli utenti non di sysadmin eseguire la stored procedure estesa xp_cmdshell , attenersi alla seguente procedura:
  1. Avviare SQL Server Enterprise Manager.
  2. In SQL Server Enterprise Manager, espandere Microsoft SQL Server e quindi espandere il Gruppo SQL Server .
  3. Espandere l'istanza di SQL Server che si desidera impostare l'account proxy per.
  4. Espandere Gestione , fare clic con il pulsante destro del mouse su SQL Server Agent e quindi fare clic su ProprietÓ .
  5. Nella finestra di dialogo ProprietÓ di Agente SQL Server , fare clic sulla scheda Sistema processi .
  6. In account proxy passaggio di processo non amministrativi , fare clic per deselezionare la casella di controllo solo agli utenti con privilegi amministrativi possono eseguire passaggi di processo CmdExec e ActiveScripting .
  7. Nell' account del proxy di Agente SQL Server finestra di dialogo digitare il nome di account di Windows il nome utente casella.
  8. Nella casella password , digitare il Windows password.
  9. Nella casella dominio digitare il dominio che l'account di Windows Ŕ un membro di e scegliere OK due volte.

Aggiungere un account SQL Server di accesso

Per aggiungere un account di accesso di SQL Server account che si desidera concedere autorizzazioni per eseguire la stored procedure xp_cmdshell estese di stored procedure, attenersi alla seguente procedura:
  1. In SQL Server Enterprise Manager, espandere protezione .
  2. Nel riquadro Login , fare clic con il pulsante destro del mouse sull'account di accesso account SQL Server che si desidera concedere autorizzazioni per e quindi scegliere ProprietÓ .

    Nota Se l'account non Ŕ giÓ stato aggiunto, Ŕ possibile creare un account proxy di Windows come account di accesso.
  3. Nella finestra di dialogo ProprietÓ di accesso di SQL Server , fare clic sulla scheda Accesso Database .
  4. Nell'elenco specificare il database sia accessibile da questo account di accesso , fare clic per selezionare la casella Autorizza per il database master e quindi fare clic su OK .
  5. Espandere database , espandere master e quindi fare clic su Estendi Stored procedure .
  6. Individuare e quindi fare clic con il pulsante destro del mouse sulla stored procedure estesa xp_cmdshell e quindi scegliere ProprietÓ .
  7. Nel stored procedure estesa proprietÓ finestra di dialogo fare clic su autorizzazioni .
  8. Selezionare la casella di controllo EXEC per eseguire di account di accesso desiderato per concedere autorizzazioni per SQL Server e quindi fare clic due volte su OK .

Metodo 2: Esecuzione di uno script Transact-SQL

Eseguire il seguente script Transact-SQL per attivare Windows account per eseguire la stored procedure estesa xp_cmdshell :
-- Set database to master.
USE master
GO

-- Add a valid Windows account as proxy account.
EXECUTE xp_sqlagent_proxy_account N'SET'
                        , N'<DomainName>'
                        , N'<WindowsAccount>'
                        , N'<WindowsPassword>'
GO
-- Get the proxy account to determine whether it is set up correctly. 
EXECUTE xp_sqlagent_proxy_account N'GET'
GO

-- Enable non-system administrators to run the job and to execute xp_cmdshell.
EXECUTE msdb..sp_set_sqlagent_properties @sysadmin_only = 0
GO
Nota In questo script, <DomainName> Ŕ il dominio che l'account di Windows Ŕ un membro di. <WindowsAccount> Ŕ il nome di account di Windows. <WindowsPassword> Ŕ la password per l'account di Windows.

Per aggiungere l'account di accesso di SQL Server che si desidera concedere l'autorizzazione per eseguire la stored procedure estesa xp_cmdshell , eseguire lo script di Transact-SQL riportato di seguito:
USE master
GO

-- Grant database access to the SQL Server login account that you want to provide access.
EXEC sp_grantdbaccess '<SQLLogin>'
GO

-- Grant execute permission on xp_cmdshell to the SQL Server login account.
GRANT exec ON xp_cmdshell TO <SQLLogin>
GO
Nota In questo script, <SQLLogin> Ŕ l'account di accesso di SQL Server che si desidera concedere l'autorizzazione per eseguire la stored procedure xp_cmdshell stored procedure estesa.

Nota L'account proxy Ŕ l'account di Windows in cui contesto di protezione vengono eseguiti i comandi della riga di comando o di processi di Agente SQL Server. Quando si imposta l'account di Windows per l'account proxy di Agente SQL Server, Ŕ necessario assegnare l'account utente "Accesso come un processo batch" a livello di Windows a destra.

Riferimenti

Per ulteriori informazioni la stored procedure estesa xp_cmdshell , vedere l'argomento di "Transact-SQL Reference" nella documentazione in linea di SQL Server.

Per ulteriori informazioni sull'account del proxy di Agente SQL Server, visitare i seguenti siti Web MSDN (informazioni in lingua inglese):
xp_sqlagent_proxy_account
http://msdn2.microsoft.com/en-us/library/aa260700(SQL.80).aspx

xp_cmdshell
http://msdn2.microsoft.com/en-us/library/aa369561.aspx

Impostazione di account di servizio Windows
http://msdn2.microsoft.com/en-us/library/aa176564(SQL.80).aspx
Per ulteriori informazioni sull'impostazione di autorizzazioni appropriate per l'account proxy, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
283811Come modificare l'account del servizio SQL Server o Agente SQL Server senza utilizzare SQL Enterprise Manager in SQL Server 2000 o SQL Server Configuration Manager in SQL Server 2005

ProprietÓ

Identificativo articolo: 890775 - Ultima modifica: lunedý 2 giugno 2008 - Revisione: 3.2
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
Chiavi:á
kbmt kbinfo kbhowto KB890775 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 890775
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com