Problem
Ein oder mehrere Wartungspläne schlagen fehl und erzeugen unangenehme Fehler im Ablaufplanb, die diesen oder einen ähnlichen Wortlauf haben. Die Sicherungen werden aber korrekt erstellt.
Ereignistyp: Warnung Ereignisquelle: SQLSERVERAGENT Ereigniskategorie: Job Engine Ereigniskennung: 208 Benutzer: Nicht zutreffend Computer: STACKEXCH1 Beschreibung: SQL Server Scheduled Job ‘<foo>’ (0xLONGID) – Status: Fehler – Invoked on: <date> – Message: Auftragsfehler Es kann nicht bestimmt werden, ob der Besitzer (‘<foo>\<bar>’) von Auftrag ‘<name>’ Serverzugriff aufweist. (Ursache: Die Informationen über Windows NT-Gruppe oder -Benutzer ‘<foo>\<bar>’ konnten nicht abgerufen werden, Fehlercode 0x5. [SQLSTATE 42000] (Fehler 15404) Die Anweisung wurde beendet. [SQLSTATE 01000] (Fehler 3621)).
Lösung
Der Benutzer kann tatsächlich nicht aufgelört werden. Das kann am Design der AD-Infrastrutur liegen, wenn die Windows-Authentifizierung benutzt wird. Wir haben gute Erfahrungen gemacht, die Wartungspläne jeweils im lokalen SQL-Server kontext mit der SQL-Authentifizierung laufen zu lassen (z.B. ’sa‘).
Das geht in den Eigenschaften des betroffenen Wartungsplanes (oder Subplanes) in dem Feld „Besitzer“. In TSQL sieht das für den ’sa‘ dann so aus:
UPDATE msdb.dbo.sysssispackages
SET [ownersid] = SUSER_SID('sa')
WHERE [name] = 'Meinwartungsplan.Subplan'
Alternativ ändert man im Management Studio, wärend man als das passende Zielkonto angemeldet ist, einfach den Namen. der aktuelle User wird dann als neue Besitzer übernommen. Einen via GUI erreichbaren Weg kennen wir spontan nicht.