Jag är väldigt grön när det gäller databasbehörighetens hantering i SQL Sever.

Låt oss hålla ett exempel enkelt.

Säg att kontot ”admin” är ägaren till scheman A, B och C.

Det finns ett annat konto ”minion” som du vill ha fullständiga rättigheter (uppdatera / radera / infoga / välj / ändra) på något objekt (tabell / vy) som skapats under scheman A, B och C.

Är det möjligt? Eller måste du utföra ett bidragsdeklaration varje gång du lägger till en tabell / vy under dessa scheman? (verkar lite dumt för mig).

Svar

Du kan GRANT schematillstånd som är effektiva för allt existerande och allt som kommer att finnas i det schemat.

Bevilja schemabehörigheter

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>; 

Ytterligare till detta, om du vill avvisa behörigheter för en viss objekt inom det schemat kan du göra.

Neka objektbehörigheter

DENY INSERT ON OBJECT::<schema>.<object> TO <user>; 

Kommentarer

  • Använd också hakparenteser om schemat eller användarnamnet har specialtecken. t.ex. .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • Fungerar ' inte i Azure, någon aning varför? (kommandona fungerar, men SSMS kommer upp och säger " du är inte Db-ägaren .. bla bla bla. Du kanske inte kan spara tabellen " och nog kan du ' t (gjorde en beviljande ALL till databasen (visar behörigheter ' Databas ', ' < db-namn > ', TheUserId, ' Skapa tabell ' och state_desc för ' GRANT ') Finns det något annat magi som behövs? Eller kan Azure endast användas av Dbo?

Svar

För att förenkla lite längre kan du använda roller för att utföra det jobb du letar efter.

När du har tilldelat behörigheter till rollen kan du bara lägga till användare i rollen. På så sätt behöver du inte hantera behörigheter för enskilda användare. Användarna ärver behörigheter som beviljas roll.

Nedan följer ett exempel för att komma igång:

 -- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector 

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *