2013-02-25 10 views
9

Mam następujący skrypt:Nie można dodać użytkownika do db_datareader poprzez skrypt

ALTER ROLE [db_datareader] ADD MEMBER [DomainGroup123] 

gdy uruchomię to na SQL Server 2008 R2 otrzymuję ten błąd:

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

Szukałem w Internecie i znalazłem examples, które używają tej dokładnej instrukcji (ale z innym użytkownikiem).

Sprawdziłem dwukrotnie, czy login istnieje i czy jest prawidłowym użytkownikiem bazy danych, z której korzystam. Mam również uprawnienia SA na serwerze.

Co mam na myśli?

+7

Mimo że znalazłeś już rozwiązanie, zwróć uwagę, że dokumentacja dla 'ALTER ROLE' pokazuje, że wypróbowana składnia jest poprawna tylko w [SQL Server 2012] (http://msdn.microsoft.com/en- us/library/ms189775 (v = sql.110) .aspx), a nie [SQL Server 2008 R2] (http://msdn.microsoft.com/en-us/library/ms189775 (v = sql.105) .aspx). – Pondlife

+0

@Pondlife ma rację. Uwaga: Powinieneś używać "ALTER ROLE" dla każdego przyszłego rozwoju w SS2012 na górze. Dowód: Uwaga firmy Microsoft "Ważne" tutaj w [sp_addrolemember] (http://msdn.microsoft.com/en-us/library/ms187750.aspx) wyraźnie mówi o używaniu "ALTER ROLE". – MikeTeeVee

Odpowiedz

15

Użyj sp_addrolemember.

EXECUTE sp_addrolemember db_datareader, 'UserName' 
2

Zauważyłem, że w zależności od wersji serwera, muszę wykonać jedną z poniższych czynności.

alter role RoleName add member UserName 

lub

execute sp_addrolemember RoleName, UserName 

myślę o zmianie mojego podejścia z prób i błędów do jakiegoś warunkowe, ale (a) operacja ta wykonywana jest dość rzadko w moim przypadku i (b) Jestem trochę leniwy w dzisiejszych czasach.

Powiązane problemy