Erteilen des Dateisystemzugriffs auf das virtuelle Konto SQLSERVERAGENT

23

Ich versuche, dem NT Service\SQLSERVERAGENTDateisystem des Windows-Kontos basierend auf der in dieser Frage angegebenen Antwort Zugriff zu gewähren . Ich glaube, es ist ein virtuelles Dienstkonto, und es wird nicht im Bereich Systemsteuerung -> Benutzerkonten angezeigt .

Wie gebe ich diesem Dienstkonto Zugriff auf das Dateisystem? Insbesondere unter Windows 7.

Ich habe mehrere Ansätze gelesen und keiner scheint für mich eine Option zu sein. Ich habe einen PowerShell-Ansatz ausprobiert, aber die AD-Befehle waren keine gültigen Befehle. Ich habe sogar den erforderlichen Windows-Patch für diese Befehle heruntergeladen und installiert. Ich habe auch gelesen, dass dies über den SQL Server-Konfigurations-Manager oder das Management Studio möglich sein sollte. Ich kann jedoch nicht herausfinden, wo diese Berechtigungen angepasst werden müssen.

Der SQL Server-Agent-Prozess kann mit der folgenden Fehlermeldung nicht gestartet werden:

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

Basierend auf meinem Googeln hat dies mit den Berechtigungen dieses Kontos zu tun.

Ich bin nicht sicher, ob die Datenbank beschädigt ist, aber es heißt, dass sich die Datenbank in einem normalen Status befindet. Die SQL Server Agent-Anmeldung ist Teil der Gruppen sysadminund public.

Ryan
quelle

Antworten:

18

Im Folgenden erfahren Sie , wie Sie dem integrierten SQL Server-Agentenkonto Datenträgerzugriffsrechte erteilen, um Ihre Frage gezielt zu beantworten . Aber lesen Sie weiter, während ich das beantworte, was ich für das eigentliche Problem halte:

1.> Klicken Sie mit der rechten Maustaste auf Ihr Laufwerk, wählen Sie Eigenschaften aus, klicken Sie auf die Schaltfläche Hinzufügen und geben Sie das Konto SQLSERVERAGENT ein.

Bildbeschreibung hier eingeben

2.> Klicken Sie auf die Schaltfläche Namen überprüfen, um zu bestätigen, dass das Konto gültig ist:

Bildbeschreibung hier eingeben

3.> Fügen Sie nun die erforderlichen Dateiberechtigungen zum SQLSERVERAGENT-Konto hinzu. Aus Gründen der Fehlerbehebung möchten Sie möglicherweise Vollzugriff gewähren und ihn später nach Bedarf verkleinern:

Bildbeschreibung hier eingeben

That being said , haben Sie wahrscheinlich nur SQL Server Configuration Manager verwenden müssen , um erneut hinzufügen die SQL - Agent - Benutzer - nach den Kommentaren habe ich über msdb und Logins. Configuration Manager nimmt mehr Änderungen an SQL Server vor als das Windows Services-Applet. Daher sollte Configuration Manager immer zum Ändern von SQL Service verwendet werden.

Dies behebt das Problem, wenn jemand das Konto in den Windows-Diensten geändert hat und der Dienst beim Start fehlschlägt. Sie müssen es in Configuration Manager zurücksetzen. Auf diese Weise kann Configuration Manager SQL Server die dringend erforderlichen Berechtigungen zum Verwalten der MSDB-Datenbank für das Konto "Lokaler Dienst" (NT SERVICE \ SQLSERVERAGENT) hinzufügen, während das Ändern von Konten im Windows-Dienst-Applet dies nicht tut.

Vorsichtsmaßnahme: Versionen von SQL Server Express über 2000 enthalten keinen SQL-Agenten. Bestimmte Aspekte scheinen vorhanden zu sein, können jedoch in der Express-Version des Produkts nicht verwendet werden.

Öffnen Sie zunächst den SQL Server-Konfigurations-Manager und doppelklicken Sie in den SQL Server-Diensten auf den SQL Server-Agentendienst. Aktivieren Sie das Optionsfeld Integriertes Konto, wählen Sie Lokaler Dienst und klicken Sie auf Übernehmen. Wichtig : Wenn Sie bereits sehen, dass dieses Konto ausgewählt ist, wählen Sie ein anderes Konto und klicken Sie auf die Schaltfläche Übernehmen. Ändern Sie ihn anschließend wieder in Lokaler Dienst und klicken Sie auf Übernehmen, damit Configuration Manager die richtigen MSDB-Berechtigungen für den Start des SQL Agent-Diensts hinzufügen kann. Starten Sie jetzt den SQL Server-Agenten neu, um diese neue Einstellung zu übernehmen.

Bildbeschreibung hier eingeben

Stachel
quelle
1
Mein SQL Server-Agentenkonto wurde auf festgelegt, NT Service\SQLAgent$MyInstanceNameund es wurde versucht, die Sicherheit für einen Ordner festzulegen. Durch Drücken auf Namen überprüfen wurde der Name nicht gefunden und er wurde nicht gefunden. Nach einiger Frustration stellte ich fest, dass die Standardeinstellung "Von diesem Speicherort" beim Klicken auf "Hinzufügen" zum Hinzufügen von Berechtigungen nicht für meinen lokalen Computer festgelegt wurde, sondern für meine Domain. Durch das Ändern auf meinem lokalen Computer (dem Stammknoten in der Baumstruktur) konnte mein NT Service\SQLAgent$MyInstanceNameKonto erkannt und den Ordnerberechtigungen hinzugefügt werden.
NibblyPig
Ich habe den "MyInstanceName" aus dem Ereignisprotokoll erhalten, in dem die Fehler protokolliert wurden.
Jasen
2

Ich habe dieses Problem behoben, indem ich das SQL Server Agent-Anmeldekonto auf LocalSystem gesetzt habe.

Louis
quelle
2
Dies ist zwar eine Problemumgehung, mit der die Dinge zum Laufen gebracht werden können, sie wird jedoch im Allgemeinen als weniger sicher angesehen als die in dieser Antwort
RDFozz
2

Ich stimme zu frustrierend ... anscheinend ist es so einfach wie nur den Namen einzugeben. http://zarez.net/?p=3187

Zusammenfassung: Geben Sie NT SERVICE \ MSSQLSERVER ein und klicken Sie dann nicht auf Namen überprüfen, sondern auf OK. Sie können Ordnerberechtigungen für das SQL-Agentenkonto festlegen.

VJason
quelle
1
Willkommen bei der DBA SE! Ich habe nicht abgelehnt. Ihre Antwort fällt in die Kategorie "Nur-Link-Antwort". Diese Antworten werden unverständlich, wenn die Gegenseite ausfällt. Die Rezensenten Ihres Beitrags hätten es Ihnen sagen sollen, es war ihr Fehler. Also: 1) Ihre Antwort sollte eigentlich eine Antwort sein (auf die Frage oben) 2) Wenn Sie etwas zitieren, auf eine Webseite verweisen, kopieren Sie es und fügen Sie es in den Beitrag ein. | Ich habe dich positiv bewertet, aber ich schlage vor, die anderen Rezensenten zu überzeugen.
Peter sagt, Monica
Exzellenter Rat @peterh, danke, dass du so hilfreich bist. V Jason, ich habe die Zusammenfassung aus Ihrem Kommentar zu Ihrer Antwort hinzugefügt - das mag ausreichen, aber Sie möchten möglicherweise überprüfen, ob Sie noch etwas hinzufügen möchten. Alle Verbesserungen werden geschätzt!
Jack Douglas