2009-10-21 31 views

Trả lời

4

Ok, đây là những gì đã xảy ra. Có một nhân vật đặc biệt trước khi kết thúc SP nên nó chưa đầy đủ nhưng vẫn hợp lệ, bằng cách nào đó.

Vì vậy, tôi có thể thấy SP và xem các quyền trên đó nhưng tôi không thể chạy nó. Vì vậy, để giải quyết vấn đề tôi đã phải sao chép văn bản ra khỏi SQL Management Studio và dán nó vào Notepad, sau đó loại bỏ các ký tự đặc biệt, sau đó sao chép và dán nó trở lại vào SQL Management Studio và chạy kịch bản thay đổi.

Rất lạ khi nhân vật đến đó!

1

Tài khoản bạn đang sử dụng khi gọi thủ tục được lưu trữ không được là cùng một tài khoản mà bạn đang sử dụng để kiểm tra. Hãy chắc chắn rằng tài khoản mà bạn đang sử dụng để thực hiện sproc có quyền truy cập vào đối tượng.

+0

Ứng dụng web đang mạo danh người dùng miền có quyền truy cập vào proc được lưu trữ. Đây là trường hợp cho tất cả các proc được lưu trữ khác được sử dụng trong hệ thống (trong 250 người khác). Và chỉ cái này là đưa ra vấn đề. Tôi đã cố gắng gán lại quyền mà không thành công. –

0

Luôn sử dụng dbo. (hoặc lược đồ khác) tiền tố cả khi tạo và khi truy cập các đối tượng.

tôi đã viết về chủ đề này rất gần đây:

http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/11/bad-habits-to-kick-avoiding-the-schema-prefix.aspx

+0

proc được lưu trữ đã được tạo bằng tiền tố lược đồ dbo và tôi đang truy cập nó thông qua Microsoft Application Block, tính số này chưa? –

+0

Xin lỗi, tôi không biết "Microsoft Application Block" là gì. Có cách nào để gọi nó là "dbo.ProcedureName" thay vì chỉ "ProcedureName"? –

0

Cũng như câu trả lời khác về vv schema/an ninh:

  • nào bạn đã một DENY vào nó ở đâu đó?
  • tên đối tượng nhạy cảm và sử dụng tên "sai"?
  • ngữ cảnh cơ sở dữ liệu sai? ví dụ: OtherDB.dbo.Myproc
2

Tương tự như câu trả lời được đánh dấu: Dòng cuối cùng của thủ tục được lưu trữ là một dòng cho phép thủ tục được lưu trữ chạy với tư cách người dùng thích hợp - có thể được thêm vào đó khi tôi tạo tập lệnh.

Xóa (hoặc có thể là một ký tự ẩn được đính kèm) được quản lý để khắc phục.

"XXX" là tên của thủ tục được lưu trữ mà tôi đã gọi, thành công (nó đã thực hiện thay đổi mong muốn) nhưng đã cho tôi lỗi này.

7

Tôi phát hiện ra rằng tôi đã để lại từ "GO" sau "END" trong proc được lưu trữ của tôi. Thay đổi Proc và thêm lại GO đã khắc phục vấn đề này cho tôi.

2

Tôi cũng gặp vấn đề này. Trong trường hợp của tôi, tôi được cấp quyền thực thi ngay sau khi tạo thủ tục lưu sẵn. Và không có 'GO' giữa hai phát biểu. Tôi đã thêm GO, và nó hoạt động.

0

Sử dụng 'GO' cũng đã khắc phục sự cố cho tôi. Điều này đã khiến tôi phát điên, sau nhiều lần giảm và kiểm tra quyền đối với người dùng và giản đồ, đây là điều cuối cùng đã giúp.

0

Trong máy chủ Microsoft SQL, đã chọn đối tượng trong trình thám hiểm đối tượng mà bạn muốn làm việc, bấm chuột phải vào nó, sau đó thực hiện 'Kịch bản [đối tượng] dưới dạng' có thể cung cấp cho bạn tập lệnh bạn cần thực hiện thành công nhận được lỗi này

-1

Nếu bạn đã đảm bảo rằng đối tượng tồn tại và bạn vẫn gặp lỗi quyền, thì bạn có thể cần chạy SQL Management Studio với các đặc quyền quản trị. Điều đó sẽ cho nó các quyền cần thiết để truy cập đối tượng.

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