Dodawanie ról w nowo utworzonej bazie danych MS SQL dla wbudowanej grupy (np. „Użytkownicy”)

W skrócie: jednym z elementów instalacji programu, który piszę jest wykonanie skryptu, który zakłada bazę, tworzy tabele i dodaje role db_datareader i db_datareader dla użytkowników lokalnych maszyny.

Pierwsza próba:

CREATE USER [BUILTIN\Użytkownicy] FOR LOGIN [BUILTIN\Użytkownicy]
EXEC sp_addrolemember N'db_datareader', N'BUILTIN\Użytkownicy'
EXEC sp_addrolemember N'db_datawriter', N'BUILTIN\Użytkownicy'

Działa, ale tylko w polskiej wersji Windows, bo w angielskiej wersji grupa nazywa się ‚BUILTIN\Users’!

Trzeba więc posłużyć się metodą SUSER_SNAME, która dla SID (Security Id) zwróci nazwę grupy w systemie (w odpowiednim języku).

Poprawiony skrypt wygląda teraz tak:

declare @user sysname
set @user = SUSER_SNAME(0x01020000000000052000000021020000)
exec sp_grantdbaccess @user, @user -- == CREATE USER @user FOR LOGIN @user
EXEC sp_addrolemember N'db_datawriter', @user
EXEC sp_addrolemember N'db_datareader', @user
Reklamy