Phiên bản ngắn: Tôi có thể cấp quyền truy cập vào cơ sở dữ liệu bên ngoài cho vai trò không?Cấp quyền truy cập cho một db cho người dùng/vai trò của một số
phiên bản Long:
tôi đang làm việc trên các báo cáo sử dụng Crystal được lấy dữ liệu từ một ứng dụng SQL Server Instance (database1
).
Ứng dụng đang chạy báo cáo và ghi đè kết nối trong báo cáo, tôi không có quyền truy cập vào mã ứng dụng.
Tôi đã thêm một DB mới vào máy chủ (database2
) đang thu thập thông tin từ trao đổi qua điện thoại và tôi muốn tham gia một số thông tin này vào dữ liệu ứng dụng (database1
).
Tôi có thể tham gia dữ liệu và báo cáo hoạt động khi chạy bên trong trình thiết kế (đăng nhập bằng SA) nhưng khi báo cáo được chạy bên ngoài thông qua ứng dụng mà chúng không thành công với lỗi khá chung chung (Không thể truy xuất dữ liệu).
Tôi giả định lỗi đang được gây ra bởi các quyền DB mới như thể tôi đăng nhập vào ứng dụng khi SA lỗi biến mất.
Ứng dụng có vai trò DB đặc biệt cho người dùng chạy báo cáo, khi thêm bảng/khung/sp vào ứng dụng db (database1
) Tôi có thể chỉ cần chọn/thực thi vai trò này để cho phép báo cáo truy cập đối tượng .
Bây giờ tôi có đối tượng trong một db khác nhau tuy nhiên vai trò không dễ dàng truy cập.
Có cách nào tôi có thể tham chiếu đến db thứ hai (database2
) thông qua vai trò hiện tại không?
ví dụ:
USE [database1]
GRANT EXECUTE ON [database2].[dbo].[CUSTOM_PROCEDURE] TO [applicationrole1]
OR
USE [database2]
GRANT EXECUTE ON [dbo].[CUSTOM_PROCEDURE] TO [database1].[dbo].[applicationrole1]
Lý tưởng nhất là tôi muốn để có thể liên kết đến các Role bằng cách nào đó chứ không phải tái tạo một vai trò mới như vai trò được cập nhật bởi các ứng dụng thường xuyên khi người dùng mới được thêm vào/cấu hình.
(Không được gắn thẻ với Crystal Reports-vì điều này không liên quan đến vấn đề)
Edit:
Có cách nào để làm điều gì đó như:
INSERT INTO Database2.sys.database_principals
SELECT * FROM Database1.sys.database_principals
WHERE [type] = 'S'
Để sao chép qua Người dùng (không phải đăng nhập) và sau đó thêm các thành viên vai trò?
Có cách nào có thể thực hiện được cho người dùng mới được thêm vào 'database1' không? – bendataclear
Đối với bất kỳ người dùng bổ sung nào bạn cần thêm, chỉ cần sử dụng tên người dùng 'CREATE USER [tên người dùng] FOR LOGIN [tên đăng nhập]' và 'exec sp_addrolemember ...' trên mỗi cơ sở dữ liệu (Bạn có thể bỏ qua phần CREATE USER nếu bạn đã tạo ra người dùng trong mỗi cơ sở dữ liệu, nói, thông qua quản lý phòng thu). – HackedByChinese
Người dùng mới được thêm vào rất thường xuyên và phải chạy các tập lệnh này mỗi lần có thể khó khăn. Có cách nào để phản ánh thông tin đăng nhập không? – bendataclear