sql >> Databasteknik >  >> RDS >> Sqlserver

Kan vi neka borttagning från specifika tabeller?

Absolut!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

Se de underbara och omfattande MSDN Books Online-dokumenten för mer information!

Om du vill neka DELETE behörighet för alla tabeller i en databas kan du använda:

DENY DELETE TO YourUserNameHere

Eller om du har strukturerat din databas på ett sådant sätt att tabellerna är grupperade i scheman , då kan du också neka en användare från ett specifikt schema.

Om du inte har grupperat dina 90 tabeller i ett separat schema (eller två, tre scheman), så finns det inget enkelt, magiskt sätt att tillämpa en behörighet på 90 bord samtidigt. Det är antingen alla tabeller , ett specifikt schema eller ett specifikt databasobjekt (som en tabell) per DENY uttalande.

Uppdatering: du kan alltid använda systemkatalogvyerna för att generera dessa DENY uttalanden åt dig och använd sedan de du behöver:

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

Detta kommer att producera som dess utdata (t.ex. i SQL Server Management Studio) en lista med satser för att neka DELETE tillstånd från din användare. Kopiera dessa rader till en textredigerare och ta bort de rader du inte behöver - och där har du din långa lista med DENY uttalanden!




  1. Välj specifik kolumn från specifik rad med gamla mysql_* API

  2. Ändra datumformat på en SQL Server DB och inte på hela servern till dd/mm/åååå

  3. SQLiteReadOnlyDatabaseException:försök att skriva en skrivskyddad databas (kod 1032)

  4. mysql Varför variabeln inte ändras i if