8 Stimmen

EXECUTE AS USER ist für den angeforderten Benutzer dbo in der Datenbank fehlgeschlagen.

Die Verwendung von SQL Server 2008.

Zunächst einmal bin ich kein DBA. Aber wenn es um gespeicherte Prozeduren, Trigger, Tabellen, das Erstellen und Normalisieren geht, kenne ich mich aus. Ich bin ein Entwickler.

Aber mit diesem neuen Job habe ich eine große Datenbank geerbt, in der viele Jobs ausgeführt werden.

Das Konto meines Vorgängers wurde deaktiviert und natürlich sind einige Jobs fehlgeschlagen.

Nachdem ich gesucht und getestet und versagt habe, muss ich jetzt um Hilfe bei diesem Problem bitten.

Der Job schlägt fehl, wenn eine gespeicherte Prozedur ausgeführt wird, und ich habe sie überprüft. Sie aktualisiert die betreffende Datenbank.

Zuerst habe ich den Besitzer des Jobs geändert:

 EXEC MSDB.dbo.sp_update_job 
 @job_name = 'MyJob', 
 @owner_login_name = 'NT AUTHORITY\SYSTEM' 
 GO 

Ich habe versucht, das sa-Konto, sqlserveragent und andere zu verwenden, aber der gleiche Fehler tritt auf. Und ich habe sichergestellt, dass diese neuen Besitzer die richtigen Berechtigungen für diese Datenbank hatten.

Die AUSFÜHREN ALS BENUTZER-Anweisung ist für den angeforderten Benutzer dbo in der Datenbank MyDB fehlgeschlagen.

Der Benutzer ändert sich nie in der Fehlermeldung vom dbo-Benutzer, auch nachdem ich den Jobbesitzer geändert habe.

Hat jemand weitere Vorschläge, die ich übersehen haben könnte?

Vielen Dank,

UPDATE:

Das Problem wurde gelöst. Heute etwas Neues gelernt!

Schauen Sie sich diesen Beitrag an: http://blog.strictly-software.com/2009/09/database-owner-sid-recorded-in-master.html

Ich hoffe, dass dies jemand anderem in Zukunft hilft, da ich etwas Zeit mit diesem Problem verschwendet habe und es nur einer kleinen SQL-Anweisung bedurfte, um es zu beheben. Es scheint immer so zu sein, nicht wahr?

3voto

Zath Punkte 517

Das Problem wurde gelöst. Heute etwas Neues gelernt!

Schau dir diesen Beitrag an: http://blog.strictly-software.com/2009/09/database-owner-sid-recorded-in-master.html

Ich hoffe, das hilft jemand anderem in der Zukunft, da ich einige Zeit mit diesem Problem verschwendet habe und es nur eine kleine SQL-Zeile benötigte, um es zu beheben. Es scheint immer so zu sein, nicht wahr?

2voto

Nathan Punkte 1657

Machen Sie die Datenbank auf Ihrem Server vertrauenswürdig:

ALTER DATABASE AdventureWorks2012 SET TRUSTWORTHY ON

Stellen Sie sicher, dass der Eigentümer des Jobs mit dem selben Login wie der Besitzer der Datenbank übereinstimmt:

USE AdventureWorks2012
GO
EXEC sp_changedbowner 'Nathan'
GO

0voto

Vitaly Borisov Punkte 1071

Für mich hatte der Benutzer Berechtigungen auf der Ebene der Datenbank, aber keine Berechtigungen auf der Serverebene wurden reflektiert. Dies hat geholfen:

USE AdventureWorks2012
EXEC sp_change_users_login 'Auto_Fix', 'Nathan'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X