Dare accesso al file system all'account virtuale SQLSERVERAGENT


23

Sto cercando di concedere l' NT Service\SQLSERVERAGENTaccesso al file system dell'account Windows, in base alla risposta contrassegnata in questa domanda . Credo che sia un account di servizio virtuale e non viene visualizzato nel pannello di controllo -> area account utente .

Come posso consentire a questo account di servizio di accedere al file system? In particolare, su Windows 7.

Ho letto diversi approcci e nessuno sembra essere un'opzione per me. Ho provato un approccio PowerShell, ma i comandi AD non erano comandi validi. Ho anche scaricato e installato la patch di Windows richiesta per questi comandi. Ho anche letto che dovrei essere in grado di farlo tramite Gestione configurazione SQL Server o Management Studio. Tuttavia, non riesco a capire dove modificare queste autorizzazioni.

Il processo di SQL Server Agent non si avvia, con il seguente messaggio di errore:

Login failed for user 'NT SERVICE\SQLSERVERAGENT'.  
Reason: Failed to open the explicitly specified database 'msdb'.  
[CLIENT: <local machine>]

Sulla base del mio Google, ha a che fare con le autorizzazioni di questo account.

Non sono sicuro che il database sia danneggiato, ma dice che il database è in uno stato normale . L'accesso a SQL Server Agent fa parte dei gruppi sysadmine public.

Risposte:


18

Per rispondere in modo specifico alla tua domanda , ecco come concedere i diritti di accesso al disco per l'account SQL Server Agent incorporato. Ma continua a leggere mentre rispondo a quello che credo sia il vero problema:

1.> Fai clic con il pulsante destro del mouse sull'unità, seleziona le proprietà, fai clic sul pulsante Aggiungi e inserisci l'account SQLSERVERAGENT (assicurati che il tuo dominio non sia selezionato nella casella di testo Da questa posizione, ma piuttosto il nome del tuo computer):

inserisci qui la descrizione dell'immagine

2.> Fare clic sul pulsante Controlla nomi per confermare che l'account sia valido:

inserisci qui la descrizione dell'immagine

3.> Ora, aggiungi l'autorizzazione del file che ti serve all'account SQLSERVERAGENT. Ai fini della risoluzione dei problemi, potresti voler dare il controllo completo e ridimensionarlo in seguito, se necessario:

inserisci qui la descrizione dell'immagine

Detto questo , probabilmente hai solo bisogno di usare SQL Server Configuration Manger per aggiungere nuovamente l'utente SQL Agent - secondo i commenti che ho visto su msdb e accessi. Configuration Manager apporta più modifiche a SQL Server rispetto all'uso dell'applet Servizi Windows, pertanto Configuration Manager deve essere sempre utilizzato per modificare QUALSIASI servizio SQL.

Questo risolverà il problema se qualcuno potrebbe aver cambiato l'account all'interno dei Servizi di Windows causando il fallimento del servizio all'avvio. Devi reimpostarlo in Configuration Manager. Ciò consente a Configuration Manager di aggiungere a SQL Server le autorizzazioni necessarie per gestire il database MSDB per l'account del servizio locale (NT SERVICE \ SQLSERVERAGENT), mentre la modifica degli account nell'applet dei servizi di Windows non lo consente.

Avvertenza: le versioni di SQL Server Express sopra 2000 non includono un agente SQL. Alcuni aspetti possono sembrare presenti, ma sono inutilizzabili nella versione Express del prodotto.

Per iniziare, apri Gestione configurazione SQL Server e fai doppio clic sul servizio Agente SQL Server in SQL Server Services. Seleziona il pulsante di opzione Account incorporato, scegli Servizio locale e fai clic sul pulsante Applica. Importante : se vedi già che questo account è selezionato, scegli un altro account e fai clic sul pulsante Applica. Quindi, ripristinalo in Servizio locale e fai clic sul pulsante Applica per consentire a Configuration Manager di aggiungere le autorizzazioni MSDB corrette per l'avvio del servizio Agente SQL. Ora, riavvia SQL Server Agent per riflettere questa nuova impostazione.

inserisci qui la descrizione dell'immagine


1
Il mio account SQL Server Agent era impostato su NT Service\SQLAgent$MyInstanceNamee cercavo di impostare la sicurezza su una cartella e premendo Controlla nomi si diceva Nome non trovato e non lo trovavo. Dopo molte frustrazioni mi sono reso conto che l'impostazione predefinita "Da questa posizione" quando si premeva Aggiungi per aggiungere autorizzazioni non era impostata sul mio computer locale, ma era impostata sul mio dominio. Modificandolo sul mio computer locale (il nodo stesso nella struttura ad albero) gli ha permesso di rilevare il mio NT Service\SQLAgent$MyInstanceNameaccount per aggiungerlo alle autorizzazioni della cartella.
NibblyPig

Ho ottenuto "MyInstanceName" dal registro eventi che ha registrato gli errori.
Jasen,

2

Ho risolto questo problema impostando l'account di accesso dell'agente SQL Server su LocalSystem.


2
Mentre questa è una soluzione alternativa che può rendere le cose funzionanti, è generalmente considerata meno sicura rispetto all'utilizzo della soluzione suggerita in questa risposta
RDFozz

2

Sono d'accordo frustrante .. a quanto pare è semplice come scrivere il nome. http://zarez.net/?p=3187

Riepilogo: digitare NT SERVICE \ MSSQLSERVER e quindi non fare clic su Controlla nome, premere OK e si è in grado di impostare le autorizzazioni per le cartelle per l'account dell'agente SQL.


1
Benvenuto su DBA SE! Non ho votato verso il basso. La tua risposta rientra nella categoria "Risposta solo link". Queste risposte diventano incomprensibili quando il lato remoto scende. I recensori del tuo post avrebbero dovuto dirtelo, è stato un loro errore. Quindi: 1) la tua risposta dovrebbe effettivamente una risposta (alla domanda in alto) 2) se stai citando qualcosa, facendo riferimento a una pagina web, copia e incolla la sua più importante anche nel post. | Ti ho dato un voto positivo, ma suggerisco di convincere gli altri recensori.
Peter dice di reintegrare Monica il

Ottimo consiglio @peterh, grazie per essere stato così utile. V Jason, ho aggiunto il riepilogo del tuo commento alla tua risposta - potrebbe essere sufficiente, ma ti potrebbe piacere rivedere per vedere se vuoi aggiungere qualcos'altro. Tutti i miglioramenti sono apprezzati!
Jack Douglas il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.