sql >> Base de Datos >  >> RDS >> Sqlserver

¿Podemos denegar la eliminación de tablas específicas?

¡Absolutamente!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

Consulte los maravillosos y extensos documentos de MSDN Books Online para más detalles!

Si desea denegar el DELETE permiso en todos tablas en una base de datos, puede usar:

DENY DELETE TO YourUserNameHere

O si ha estructurado su base de datos de tal manera que las tablas se agrupen en esquemas , entonces también puede denegar a un usuario de un esquema específico.

Si no ha agrupado sus 90 tablas en un esquema separado (o dos, tres esquemas), entonces no hay una manera fácil y mágica para aplicar un permiso a 90 tablas a la vez. Son todas las tablas , un esquema específico o un objeto de base de datos específico (como una tabla) por DENY declaración.

Actualización: siempre puede usar las vistas del catálogo del sistema para generar esos DENY declaraciones para usted, y luego use las que necesite:

SELECT 
    'DENY DELETE ON ' + t.NAME + ' TO (youruser)'
FROM sys.tables t

Esto producirá como salida (por ejemplo, en SQL Server Management Studio) una lista de sentencias para denegar DELETE permiso de su usuario. Copie esas filas en un editor de texto y elimine las filas que no necesita, y ahí tiene su larga lista de DENY declaraciones!