मैं अपनी संग्रहीत प्रक्रिया का उपयोग करने की कोशिश करते हुए कुछ याद कर रहा हूं EXECUTE AS
। संग्रहीत प्रक्रिया डेटा को पढ़ रही है source_db
, इसे एकत्र करती है और परिणाम को स्टोर करती है target_db
।
सपा में ही है 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
समस्या हल करती है, लेकिन यह मेरे लिए सही समाधान नहीं लगता है ...