Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

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
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 masterGO-- 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 = 0GO
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 masterGO-- 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):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
SQL2000

Proprietà

ID articolo: 890775 - Ultima revisione: 06/02/2008 17:39:42 - Revisione: 3.2

Microsoft SQL Server 2000 Standard Edition

  • kbmt kbinfo kbhowto KB890775 KbMtit
Feedback