2013-02-25 29 views
9

tôi đã kịch bản sau đây:Không thể thêm người dùng db_datareader qua kịch bản

ALTER ROLE [db_datareader] ADD MEMBER [DomainGroup123] 

khi tôi chạy này chống lại SQL Server 2008 R2 Tôi nhận được lỗi này:

Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'ADD'.

tôi đã xem xét trực tuyến và tìm thấy examples sử dụng tuyên bố chính xác này (nhưng với người dùng khác.)

Tôi đã kiểm tra kỹ đăng nhập tồn tại và là người dùng hợp lệ trên cơ sở dữ liệu tôi đang sử dụng. Ngoài ra tôi có quyền SA trên máy chủ.

Tôi đang làm gì?

+7

Mặc dù bạn đã tìm thấy giải pháp, xin lưu ý rằng tài liệu cho 'ALTER ROLE' cho thấy cú pháp bạn đã thử chỉ hợp lệ trong [SQL Server 2012] (http://msdn.microsoft.com/en- chúng tôi/thư viện/ms189775 (v = sql.110) .aspx), không phải [SQL Server 2008 R2] (http://msdn.microsoft.com/en-us/library/ms189775 (v = sql.105) .aspx). – Pondlife

+0

@Pondlife là đúng. Lưu ý: Bạn nên sử dụng "ALTER ROLE" cho bất kỳ sự phát triển nào trong tương lai trong SS2012. Bằng chứng: Lưu ý quan trọng của Microsoft ở đây trên [sp_addrolemember] (http://msdn.microsoft.com/en-us/library/ms187750.aspx) nói rõ ràng để sử dụng "ALTER ROLE" thay thế. – MikeTeeVee

Trả lời

15

Sử dụng sp_addrolemember.

EXECUTE sp_addrolemember db_datareader, 'UserName' 
6

Tìm thấy câu trả lời này: https://stackoverflow.com/a/456365/16241

Đó chỉ cho tôi mà tôi có thể chạy nó như thế này:

exec sp_addrolemember db_datareader, [DomainGroup123] 

tôi đã làm điều đó và nó làm việc.

2

Tôi nhận thấy rằng tùy thuộc vào phiên bản của máy chủ, tôi cần thực hiện một trong các thao tác sau.

alter role RoleName add member UserName 

hoặc

execute sp_addrolemember RoleName, UserName 

Tôi đang nghĩ đến việc thay đổi cách tiếp cận của tôi từ thử nghiệm và lỗi đối với một số loại có điều kiện nhưng (a) hoạt động này được thực hiện khá hiếm trong trường hợp của tôi và (b Hôm nay tôi hơi lười.

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