Saya kehilangan sesuatu saat mencoba menggunakan prosedur tersimpan saya EXECUTE AS
. Prosedur tersimpan adalah membaca data dari source_db
, mengumpulkannya dan menyimpan hasilnyatarget_db
.
SP itu sendiri ada di target_db
. Saya memiliki login khusus dan memetakannya untuk pengguna di kedua source_db
dan target_db
untuk pemilik sp (jadi ada pengguna app_agent
masuk source_db
dan target_db
masuk untuk masukapp_agent
).
Jika saya login sebagai app_agent
, dan jalankan
EXEC target_db.app_agent_schema.import_data
semuanya bekerja dengan baik. Tetapi jika saya berubah
ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`)
dan coba jalankan, itu melempar
Server utama "app_agent" tidak dapat mengakses database "source_db" di bawah konteks keamanan saat ini.
Saya menggunakan SQL Server 2008.
Bisakah seseorang menunjukkan kesalahan saya?
Terima kasih
Pembaruan
Setelah melakukan beberapa penelitian, saya menemukan bahwa ALTER DATABASE target_db SET TRUSTWORTHY ON
menyelesaikan masalah, tetapi itu sepertinya bukan solusi yang tepat bagi saya ...