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_db
und target_db
für den Besitzer von sp zu (es gibt also einen Benutzer app_agent
in source_db
und in target_db
für das Login app_agent
).
Wenn ich mich als app_agent
anmelde 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 ON
das Problem löst, aber das scheint mir nicht die richtige Lösung zu sein ...