EXECUTE AS
ฉันหายไปบางสิ่งบางอย่างในขณะที่พยายามที่จะทำให้การใช้งานขั้นตอนของฉันเก็บไว้ ขั้นตอนการจัดเก็บไว้อ่านข้อมูลจากมวลรวมและส่งผลให้ร้านค้าsource_db
target_db
ตัว sp อยู่target_db
ค่ะ ฉันมีการเข้าสู่ระบบโดยเฉพาะและแมปกับผู้ใช้ทั้งในsource_db
และtarget_db
สำหรับเจ้าของของ sp (ดังนั้นจึงมีผู้ใช้app_agent
ในsource_db
และในtarget_db
การเข้าสู่ระบบapp_agent
)
หากฉันเข้าสู่ระบบในฐานะapp_agent
และดำเนินการ
EXEC target_db.app_agent_schema.import_data
ทุกอย่างทำงานได้ดี แต่ถ้าฉันเปลี่ยน
ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`)
และลองใช้งานมันมันจะพ่น
เซิร์ฟเวอร์หลัก "app_agent" ไม่สามารถเข้าถึงฐานข้อมูล "source_db" ภายใต้บริบทความปลอดภัยปัจจุบัน
ฉันใช้ SQL Server 2008
ใครช่วยชี้ให้เห็นข้อผิดพลาดของฉัน?
ขอบคุณ
อัปเดต
หลังจากทำวิจัยบางอย่างฉันพบว่าการALTER DATABASE target_db SET TRUSTWORTHY ON
แก้ปัญหา แต่ดูเหมือนจะไม่ใช่วิธีที่เหมาะสมสำหรับฉัน ...