SQL Server 2008: ¿cómo otorgo privilegios a un nombre de usuario?

102

Necesito poder establecer una conexión ODBC a través de la autenticación de SQL Server.

En SSMS, ¿cómo otorgo permiso para que un usuario pueda tener TODOS LOS DERECHOS en una base de datos específica?

¿Hay alguna manera de hacer esto gráficamente con SSMS?

l --''''''--------- '' '' '' '' '' '
fuente

Respuestas:

139

Si desea otorgar a su usuario todos los permisos de lectura, puede usar:

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

Eso agrega el db_datareaderrol predeterminado (permiso de lectura en todas las tablas) a ese usuario.

También hay una db_datawriterfunción, que le otorga a su usuario todos los permisos de ESCRITURA (INSERTAR, ACTUALIZAR, ELIMINAR) en todas las tablas:

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

Si necesita ser más granular, puede usar el 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

y así sucesivamente, puede otorgar permisos SELECT, INSERT, UPDATE, DELETE en tablas específicas de manera granular.

Todo esto está muy bien documentado en los Libros en pantalla de MSDN para SQL Server .

Y sí, también puede hacerlo gráficamente: en SSMS, vaya a su base de datos, luego Security > Users, haga clic con el botón derecho en el usuario al que desea otorgar permisos, luego y Propertiesen la parte inferior verá "Membresías de roles de base de datos" donde puede agregar el usuario a roles de base de datos.

texto alternativo

marc_s
fuente
de alguna manera no tengo el nodo Usuarios en el árbol de seguridad en SSMS, solo inicios de sesión y credenciales; aparte de esto, para que sp_addrolemember funcione, el usuario debe estar asignado a la base de datos en cuestión, de lo contrario "usuario ... no existe en la base de datos "se da un error ( stackoverflow.com/questions/7232559/… - ver comentarios a la respuesta aceptada) - podría mapear user-db a través de Propiedades del objeto de inicio de sesión del usuario
hello_earth
@marc_s, ¿Cómo otorgar permisos relacionados con una tabla en particular usando SSMS?
CAD
61

Si realmente quiere que tengan TODOS los derechos:

use YourDatabase
go
exec sp_addrolemember 'db_owner', 'UserName'
go
Joe Stefanelli
fuente
18

Como el siguiente. Hará que el usuario sea propietario de la base de datos.

EXEC sp_addrolemember N'db_owner', N'USerNAme'
SQLMenace
fuente