2012-12-10 17 views
6

Mam skrypt Powershell, który jest wykonywany w kontekście użytkownika systemu Windows. Ten użytkownik ma login w instancji SQL 2012, która jest członkiem roli sysadmin server.Jak dodać użytkownika systemu Windows do roli serwera sysadmin w programie SQL Server 2012?

Chcę, aby skrypt dodawał kolejne logowanie do instancji SQL (która również ma odpowiedniego użytkownika systemu Windows) do roli serwera sysadmin.

Aby to wypróbować w Management Studio (podłączone jako SA), używam następujący skrypt:

execute as user = 'domain\currentsysadmin' 

IF IS_SRVROLEMEMBER('sysadmin', 'domain\futuresysadmin') != 1 
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [domain\futuresysadmin] 

revert 

Mam dwa problemy tutaj:

  1. Kiedy uruchomić skrypt jak to jest tutaj wyświetlane, wywołanie IS_SRVROLEMEMBER zwraca 0 zgodnie z oczekiwaniami, ale mimo że domena \ currentsysadmin login jest członkiem sysadmin, wywołanie do ALTER SERVER ROLE zwraca:

    Ms g 15151, poziom 16, stan 1, wiersz 8 Nie można zmienić roli serwera "sysadmin", ponieważ nie istnieje lub nie masz uprawnień.

  2. Po uruchomieniu tego w kontekście SA bez instrukcji WYKONAJ AS, instrukcja ALTER SERVER ROLE wydaje się działać pomyślnie, ale gdy sprawdzam login domeny \ futuresysadmin, nadal nie jest członkiem roli sysadmin

Jak dodać domenę \ logowanie do futuresystem do roli serwera sysadmin?

+0

Czy ktoś mógłby podać mi wyjaśnienie, dlaczego to pytanie zostało odrzucone i zamknięte? Nie jestem tu snurkiem - to moje pierwsze pytanie w Stack Overflow, więc chciałbym zrozumieć, co jest nie na temat mojego pytania. – drewmullet

Odpowiedz

4

Zastosowanie sp_addsrvrolemember:

EXEC master..sp_addsrvrolemember @loginame = N'domain\futuresysadmin', @rolename = N'sysadmin' 

UPDATE: przełączania kontekstu Użytkownik nie dziedziczy żadnych ról serwera, jak sysadmin. Czytając dokumentację: "Uprawnienia na poziomie serwera przyznane jawnie tożsamościom w tokenie użytkownika lub przynależności do roli nie są honorowane." Po zmianie kontekstu użytkownika użytkownik nie ma już uprawnień do przydzielania sysadminu innemu użytkownikowi.

+0

Dzięki JVC. Rozumiem jednak, że ten sposób dodawania członków roli jest teraz przestarzały i że ALTER SERVER ROLE ma być nowym sposobem działania - zobacz http://msdn.microsoft.com/en-us/library/ms186320.aspx. – drewmullet

+0

Również, gdy używam powyższego w miejsce instrukcji ALTER SERVER ROLE, otrzymuję to samo "Msg 15151, Level 16, State 1, Line 8 Nie można zmienić roli serwera" sysadmin ", ponieważ nie istnieje lub robisz nie mam pozwolenia. " błąd jak w opisie. – drewmullet

+1

Nie sądzę, że to zadziała. Przełączanie kontekstu użytkownika nie dziedziczy żadnych ról serwera, takich jak sysadmin. Czytając dokumentację "Uprawnienia na poziomie serwera przyznane jawnie tożsamości w tokenie użytkownika lub przynależności do roli nie są honorowane." Po zmianie kontekstu użytkownika użytkownik nie ma już uprawnień do przydzielania sysadminu innemu użytkownikowi. – JVC

Powiązane problemy