2010-07-30 58 views
10

Tôi có một tập lệnh tạo cơ sở dữ liệu, lưu trữ procs, lượt xem, bảng, udf. Tôi muốn bao gồm một kịch bản để tạo user_1 của người dùng và cho phép thực thi trên cơ sở dữ liệu.t-sql tạo người dùng và cấp quyền thực thi cho phép đối với các thủ tục được lưu trữ

Tôi đã cố gắng sau để tạo lệnh exec cấp cho tất cả được lưu trữ procs

declare @permission varchar(max) 

select @permission = COALESCE(
    @permission + '; ' + 'Grant Execute on ' + name + ' user_1', 
    'Grant Execute on ' + name + ' user_1') 
from sysobjects where xtype in ('P') 

exec (@permission) 

Nhưng exec (@permission) không hoạt động. Nó cung cấp cho

cú pháp không chính xác gần ';'.

Tôi làm cách nào để giải quyết vấn đề này?

+0

Bạn đã thử gì? Bạn có tìm kiếm trợ giúp trực tuyến cho CREATE USER hoặc GRANT không? –

Trả lời

24

Tạo thông tin đăng nhập: tạo thông tin đăng nhập cấp máy chủ. Sau đó ... Tạo người dùng: cho phép tài khoản Đăng nhập đính kèm vào cơ sở dữ liệu của bạn. Sau đó, ... Cấp quyền Thực hiện: cấp quyền thực thi cho TẤT CẢ các hàm và hàm trong db của bạn. Sử dụng "Grant Execute ON abc TO xyz" nếu bạn chỉ muốn cấp quyền cho các sp cụ thể.

Create login abacadaba with password='ABVDe12341234'; 
Create user abacadaba for login abacadaba; 
Grant Execute to abacadaba; 
+1

Chỉ những gì tôi đang tìm kiếm. Cảm ơn bạn. Tại sao tài liệu SQL khó khăn để sàng lọc? –

2

Các bạn đã thử:

CREATE LOGIN TestUser WITH PASSWORD = 'TopSecret' 
GRANT EXEC ON MyStoredProc TO TestUser 

bạn cũng có thể "CREATE USER" nếu đó là những gì bạn muốn.

+0

tôi cần một tập lệnh để trích xuất tất cả các procs được lưu trữ và cấp quyền. – stackoverflowuser

+0

Xin lưu ý, nếu tên người dùng có bất kỳ ký tự đặc biệt hoặc số nào, ví dụ: '123SPROCUSER' thì tên người dùng phải được bao quanh bởi dấu ngoặc vuông như vậy [01] [IMGSPROCUSER]' – Shrout1

0

Có chính xác cùng một vấn đề với người dùng ban đầu, nhưng đối với tôi đó là ký tự xấu được nhúng trong TSQL - Tôi đoán từ bất kỳ nguồn nào được cắt và dán.

Dù sao tùy thuộc vào khoảng trắng bạn có, chỉ cần xóa khoảng trắng giữa các từ và thay thế bằng các khoảng trắng thông thường.

Hãy thử tất cả các câu trả lời khác trước đây, rất khó - tôi chỉ thêm nó vì nó quá bực bội khi có 2 dòng TSQL trông giống như giống hệt nhau ở trên/dưới mỗi khác, nhưng dẫn đến kết quả khác nhau khi được tô sáng và chạy trong Management Studio ...

CẬP NHẬT: Ký tự xấu được dán từ Microsoft Lync

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