SQL Server 2008: come si concedono i privilegi a un nome utente?


102

Devo essere in grado di stabilire una connessione ODBC tramite l'autenticazione di SQL Server.

In SSMS come si concede l'autorizzazione affinché un utente possa avere TUTTI I DIRITTI su un database specifico?

c'è un modo per farlo graficamente con SSMS?

Risposte:


139

Se vuoi dare al tuo utente tutte le autorizzazioni di lettura, puoi usare:

EXEC sp_addrolemember N'db_datareader', N'your-user-name'

Ciò aggiunge il db_datareaderruolo predefinito (autorizzazione di lettura su tutte le tabelle) a quell'utente.

C'è anche un db_datawriterruolo, che fornisce al tuo utente tutte le autorizzazioni di SCRITTURA (INSERT, UPDATE, DELETE) su tutte le tabelle:

EXEC sp_addrolemember N'db_datawriter', N'your-user-name'

Se devi essere più granulare, puoi utilizzare il GRANTcomando:

GRANT SELECT, INSERT, UPDATE ON dbo.YourTable TO YourUserName
GRANT SELECT, INSERT ON dbo.YourTable2 TO YourUserName
GRANT SELECT, DELETE ON dbo.YourTable3 TO YourUserName

e così via: puoi concedere in modo granulare l'autorizzazione SELECT, INSERT, UPDATE, DELETE su tabelle specifiche.

Tutto ciò è molto ben documentato nella documentazione in linea di MSDN per SQL Server .

E sì, puoi anche farlo graficamente: in SSMS, vai al tuo database, quindi Security > Users, fai clic con il pulsante destro del mouse sull'utente a cui desideri concedere le autorizzazioni, quindi Propertiesin basso vedrai "Appartenenze al ruolo del database" dove puoi aggiungere il utente ai ruoli del database.

testo alternativo


in qualche modo non ho il nodo Utenti nella struttura ad albero della sicurezza in SSMS, solo accessi e credenziali - a parte questo, affinché sp_addrolemember funzioni, l'utente deve essere mappato al database in questione, altrimenti "utente ... non lo fa esiste nel database "viene fornito un errore ( stackoverflow.com/questions/7232559/… - vedi commenti alla risposta accettata) - potrei mappare user-db tramite le proprietà dell'oggetto Login dell'utente
hello_earth

@marc_s, Come concedere l'autorizzazione relativa a una particolare tabella utilizzando SSMS?
CAD


61

Se vuoi davvero che abbiano TUTTI i diritti:

use YourDatabase
go
exec sp_addrolemember 'db_owner', 'UserName'
go

18

Come il seguente. Renderà il proprietario del database utente.

EXEC sp_addrolemember N'db_owner', N'USerNAme'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.