Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Podemos negar a exclusão de tabelas específicas?


Absolutamente!
DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

Consulte os maravilhosos e extensos documentos Manuais Online do MSDN para mais detalhes!

Se você deseja negar o DELETE permissão em todos tabelas em um banco de dados, você pode usar:
DENY DELETE TO YourUserNameHere

Ou se você estruturou seu banco de dados de forma que as tabelas sejam agrupadas em esquemas , você também poderá negar um usuário de um esquema específico.

Se você não agrupou suas 90 tabelas em um esquema separado (ou dois, três esquemas), então não há uma maneira fácil e mágica para aplicar uma permissão a 90 tabelas de uma só vez. É todas as tabelas , um esquema específico ou um objeto de banco de dados específico (como uma tabela) por DENY declaração.

Atualização: você sempre pode usar as visualizações do catálogo do sistema para gerar esses DENY instruções para você e, em seguida, use as que você precisa:
SELECT 
    'DENY DELETE ON ' + t.NAME + ' TO (youruser)'
FROM sys.tables t

Isso produzirá como saída (por exemplo, no SQL Server Management Studio) uma lista de instruções para negar o DELETE permissão do seu usuário. Copie essas linhas em um editor de texto e remova as linhas que você não precisa - e aí você tem sua longa lista de DENY declarações!