2012-08-07 30 views
11

Tôi đã tạo báo cáo bằng Crystal Reports XIr2 để báo cáo thông tin từ cơ sở dữ liệu cho ứng dụng của chúng tôi. Nó là một báo cáo tab chéo, báo cáo về một loạt các dữ liệu được trả về từ việc chạy một thủ tục lưu sẵn. Một bit nhanh về ứng dụng mà báo cáo này được chạy qua - nó là một ứng dụng được viết bằng VB6, khi tải ứng dụng bạn được nhắc nhập tên người dùng và mật khẩu, được cấu hình trên máy chủ SQL dưới dạng đăng nhập SQL, vì vậy, khi bạn đăng nhập vào ứng dụng bạn đang xác thực đối với bảo mật máy chủ SQL.Bảng [tablename] không thể tìm thấy -2147189180

Báo cáo hoạt động hoàn toàn tốt trong Crystal Reports, tuy nhiên tôi đang gặp phải một số hành vi lạ với báo cáo này khi báo cáo được khởi chạy từ bên trong ứng dụng của chúng tôi trên trang web của khách hàng. Nó hoạt động tốt cho tất cả người dùng có quyền truy cập cơ sở dữ liệu cấp 'sa' nhưng cung cấp lỗi sau khi chạy như bất kỳ người dùng nào khác;

Error message

Nếu tôi kết nối đến máy chủ cơ sở dữ liệu trực tiếp như một người sử dụng mà được các lỗi trên trong ứng dụng, chạy các thủ tục lưu trữ bằng tay hoạt động mà không có bất kỳ lỗi.

Nếu tôi cung cấp cho người dùng nhận được lỗi trong quyền của ứng dụng 'sa' trên máy chủ SQL, lỗi sẽ không xảy ra.

Tôi đã kiểm tra tất cả các quyền thực thi liên quan cho thủ tục được lưu trữ được đề cập, nhưng như đã nêu nếu tôi kết nối với SQL Server theo cách thủ công và thực hiện quy trình, tôi không gặp lỗi được liên kết ở trên.

Nếu người dùng nhận được lỗi này chạy báo cáo khác trước khi báo cáo này hoạt động, tuy nhiên nếu họ chạy báo cáo sau khi nhận được lỗi này, tất cả báo cáo ngừng hoạt động và yêu cầu khởi động lại ứng dụng.

Bạn có ý tưởng nào không?

+0

hãy mở báo cáo trong Crystal và tìm bảng bị ảnh hưởng trong Field Explorer. Nhấp chuột phải vào bảng và chọn "Đặt vị trí nguồn dữ liệu ...". Mở rộng cây bên dưới bảng bị ảnh hưởng và xem các thuộc tính của nó. Chủ sở hữu là ai? – Dorian

+0

@XToro chủ sở hữu là dbo –

+0

Quy trình được lưu trữ có thực hiện bất kỳ WRITING nào với cơ sở dữ liệu không? Hay là nó chỉ chạy câu lệnh 'Select'? Giả sử bạn có quyền truy cập vào SQL Server; trong thuộc tính cơ sở dữ liệu> Quyền, người dùng hoặc vai trò cố gắng chạy thủ tục có bất kỳ quyền nào không? – Dorian

Trả lời

1

Tôi khuyên bạn nên đảm bảo lược đồ mặc định của ánh xạ người dùng cho cơ sở dữ liệu được đặt thành dbo cho người dùng báo cáo sự cố. Tôi cũng khuyên bạn nên sử dụng vai trò cơ sở dữ liệu cho điều đó.

0

Cấp quyền thực thi không phải luôn luôn kết thúc ở đó - Đôi khi, bạn sẽ phải kiểm tra các khối quyền có thể có của các đối tượng bên trong. Khi bạn nói rằng bạn đã sử dụng thông tin đăng nhập của người dùng để chạy thủ tục theo cách thủ công, nó cũng chắc chắn rằng thông tin đăng nhập của người dùng là những gì bạn sử dụng để kết nối với cơ sở dữ liệu?

lẽ bạn có thể sử dụng một sql đăng nhập phổ quát hơn rằng ứng dụng sẽ sử dụng - (! Chỉ là một gợi ý :)) cách này bạn sẽ không cần phải theo dõi các khoản cho nhiều người dùng

Các vấn đề liên quan