Beim Versuch, meine gespeicherte Prozedur zu verwenden, fehlt etwas EXECUTE AS. Die gespeicherte Prozedur liest Daten aus source_db, aggregiert sie und speichert das Ergebnis in target_db.
Der SP selbst ist in target_db. Ich habe ein dediziertes Login und ordne es Benutzern in source_dbund target_dbfür den Besitzer von sp zu (es gibt also einen Benutzer app_agentin source_dbund in target_dbfür das Login app_agent).
Wenn ich mich als app_agentanmelde und ausführe
EXEC target_db.app_agent_schema.import_data
alles funktioniert gut Aber wenn ich mich ändere
ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`)
und versuchen Sie es auszuführen, wirft es
Der Serverprinzipal "app_agent" kann im aktuellen Sicherheitskontext nicht auf die Datenbank "source_db" zugreifen.
Ich verwende SQL Server 2008.
Könnte jemand auf meinen Fehler hinweisen?
Vielen Dank
Update
Nachdem ich einige Nachforschungen angestellt hatte, stellte ich fest, dass dies ALTER DATABASE target_db SET TRUSTWORTHY ONdas Problem löst, aber das scheint mir nicht die richtige Lösung zu sein ...