Tôi đang thiếu một cái gì đó trong khi cố gắng làm cho thủ tục lưu trữ của tôi sử dụng EXECUTE AS
. Các thủ tục được lưu trữ là đọc dữ liệu từ source_db
, tổng hợp nó và lưu trữ kết quả trong target_db
.
Các sp chính nó là trong target_db
. Tôi có một thông tin đăng nhập chuyên dụng và ánh xạ nó tới người dùng ở cả hai source_db
và target_db
cho chủ sở hữu của sp (vì vậy có một người dùng app_agent
vào source_db
và target_db
đăng nhập app_agent
).
Nếu tôi đăng nhập như app_agent
và thực thi
EXEC target_db.app_agent_schema.import_data
mọi thứ đều hoạt động tốt. Nhưng nếu tôi thay đổi
ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`)
và thử thực hiện nó, nó ném
Hiệu trưởng máy chủ "app_agent" không thể truy cập cơ sở dữ liệu "source_db" trong bối cảnh bảo mật hiện tại.
Tôi đang sử dụng SQL Server 2008.
Ai đó có thể chỉ ra lỗi của tôi?
Cảm ơn
Cập nhật
Sau khi thực hiện một số nghiên cứu, tôi thấy rằng ALTER DATABASE target_db SET TRUSTWORTHY ON
giải quyết được vấn đề, nhưng đó dường như không phải là giải pháp phù hợp với tôi ...