c# 4.0 - usuarios - ¿Cómo permitir que un usuario de SQL Server inserte/actualice/elimine datos, pero no altere el esquema?
tipos de usuarios en sql server (1)
Si realmente quieres controlar esto a nivel de objeto, puedes hacer:
GRANT SELECT,UPDATE,INSERT,DELETE ON dbo.table TO user;
En el nivel de esquema:
GRANT SELECT,UPDATE,INSERT,DELETE ON SCHEMA::dbo TO user;
Sin embargo, lo ideal sería que no permitiera el uso de DML ad hoc en sus tablas y controle todos los DML mediante procedimientos almacenados. En ese caso, solo debe otorgar a exec el procedimiento en sí, y no a los objetos que toca:
GRANT EXEC ON dbo.procedure TO user;
De manera similar, si desea permitir la ejecución de todos los procedimientos en un esquema específico, puede decir:
GRANT EXEC ON SCHEMA::dbo TO user;
La única excepción es cuando su procedimiento almacenado compone SQL dinámico. En esos casos, es posible que aún necesite aplicar permisos a las tablas subyacentes en el contexto de la ejecución de SQL dinámico, o puede usar EXECUTE AS OWNER
.
Mi aplicación (C #, ASP.Net) necesita insertar, actualizar y eliminar datos en la base de datos, y ejecutar procedimientos almacenados. Necesito evitar que modifique el esquema de base de datos, sin alterar las tablas, crear o eliminar, sin cambios en los procedimientos almacenados.
¿Qué combinación de permisos debo otorgar al usuario de la aplicación? Simplemente ''seleccionar'' no va a funcionar, porque necesita insertar / actualizar / eliminar datos en tablas.
¿Cómo reviso los permisos y acceso para un inicio de sesión en particular? ¿Cómo otorgo o denego permisos y acceso para un inicio de sesión? Necesito dar permisos a un nuevo usuario (inicio de sesión) para acceder a una sola base de datos.
Usando SQL Server 2008 R2, con SSMS.