[SQL server 2005] Permissies toekennen via een script*

Pagina: 1
Acties:

  • Craven
  • Registratie: Februari 2007
  • Laatst online: 21:42
Ik wist niet zeker of hij in wss of prg moest move maar als het nodig is.

ik zit met een probleem in sql server 2005. Het is eigenlijk huiswerk en ik hoor het eigenlijk niet hier op het forum te posten maar ik zit helemaal vast. Het zit zo leraar heeft 1 dag voor oplevering bedacht dat hij een wijziging in het project wilde. Het was geen probleem als we hier niet aan konden voldoen maar levert wel punten op. En die wil ik graag dusss :P.

Situatie:
- W2k3 server standard (sp2 up to date)
- sql server 2005 (up to date)
- adventureworks database van ms

Anyway ik heb me rot gezocht op google maar kom er totaal niet uit. Komt waarschijnlijk ook doordat ik totaal geen ervaring heb met SQL server 2005 (afgezien van dit project dan) en de sql taal maar goed.

Probleem:
Mijn probleem is vrij simpel. Ik heb een user role met daarin een usertje en hierop moeten permissies worden toegekend. Dit gaat heel simpel om een aantal tabellen waarop ik dan weer alter, insert en delete permissies op moet instellen bvb. Maar het zijn nogal een aantal tabellen (stuk of 20). Die kun je dan in 1 keer toevoegen maar je moet per tabel elke keer dezelfde paar vinkjes zetten. Nou kan het aan mij liggen maar is dit niet nogal omslachtig? Lijkt me dat dit op een snellere manier kan. Ik kan alleen nergens wat vinden om bvb tabellen te groeperen of door een of andere query te maken die alle tabellen selecteert. Kan iemand mij hier op weg helpen?

  • Paul
  • Registratie: September 2000
  • Nu online
Click na het zetten van de vinkjes en voor het klikken op ok eens op het knopje Script oid links/midden boven? ;)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Craven
  • Registratie: Februari 2007
  • Laatst online: 21:42
oehh Paul Nieuwkamp is mijn nieuwe held. Hier kan ik wel wat mee! :D thanks

edit: ohw jemig het werkt zelfs in 1 keer zonder foutmelding :P nu nog 2 roles te gaan.

[ Voor 37% gewijzigd door Craven op 05-11-2009 21:35 ]


  • Paul
  • Registratie: September 2000
  • Nu online
Mischien wat laat, maar
SQL:
1
2
3
4
5
6
7
8
USE OpdrachtDatabase
CREATE ROLE standarduser

GRANT SELECT ON dbo.Users (username,fullname,age,lastlogon) TO standarduser
GRANT UPDATE ON dbo.Users (lastlogon) TO standarduser
[..]

EXEC sp_addrolemember 'standarduser', 'AccountName'

is wat beter dan het rechtstreeks op users. Als je nu een recht toe moet voegen (of een user) hoef je alleen de rechten van de role aan te passen, of users al dan niet lid te maken van die role, en je bent klaar. Ik gok namelijk dat je nu per user (als het er meerdere zijn, kunt ook een AD group gebruiken natuurlijk als je het liever vanuit AD&C regelt) de rechten uitdeelt?

Je hebt het wel over roles, maar ik heb zo geen idee hoe jij die gebruikt :P En anders heeft iemand die de zoekfunctie gebruikt er later nog wat aan :+

[ Voor 10% gewijzigd door Paul op 05-11-2009 22:07 ]

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Craven
  • Registratie: Februari 2007
  • Laatst online: 21:42
ehh roles kan ik toch gewoon zien als groepen? ik heb ze nu tenminste wel zo gebruikt. Ik heb de permissies ingesteld op de roles en vervolgens users toevoegen aan de role.
stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
USE [AdventureWorks]
GO
CREATE ROLE [Salesmanagers] AUTHORIZATION [dbo]
GO
USE [AdventureWorks]
GO
EXEC sp_addrolemember N'Salesmanagers', N'SQL_1\Salesmanager'
GO
use [AdventureWorks]
GO
GRANT ALTER ON [Sales].[CountryRegionCurrency] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT DELETE ON [Sales].[CountryRegionCurrency] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT INSERT ON [Sales].[CountryRegionCurrency] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT SELECT ON [Sales].[CountryRegionCurrency] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT UPDATE ON [Sales].[CountryRegionCurrency] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT ALTER ON [Sales].[ContactCreditCard] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT DELETE ON [Sales].[ContactCreditCard] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT INSERT ON [Sales].[ContactCreditCard] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT SELECT ON [Sales].[ContactCreditCard] TO [Salesmanagers]
GO
use [AdventureWorks]
GO
GRANT UPDATE ON [Sales].[ContactCreditCard] TO [Salesmanagers]
GO

  • Paul
  • Registratie: September 2000
  • Nu online
Yup.

Je hoeft trouwens niet overal GO en USE AdventureWorks tussen te zetten, na de eerste keer USE snapt het script wel dat je die database gebruikt, en GO (Transact-SQL) zorgt nu voor een heleboel overhead zonder dat het nut heeft :)

Dit doet hetzelfde (niet getest :P ):
SQL:
1
2
3
4
5
6
7
8
USE [AdventureWorks]

CREATE ROLE [Salesmanagers] AUTHORIZATION [dbo]

EXEC sp_addrolemember N'Salesmanagers', N'SQL_1\Salesmanager'

GRANT ALTER, DELETE, INSERT, SELECT, UPDATE ON [Sales].[CountryRegionCurrency] TO [Salesmanagers]
GRANT ALTER, DELETE, INSERT, SELECT, UPDATE ON [Sales].[ContactCreditCard] TO [Salesmanagers]

Weet je overigens zeker dat je een Salesmanager de structuur van je tabel aan wilt kunnen laten passen? Of, diezelfde vraag anders gesteld, waarom zou een Salesmanager ALTER TABLE nodig hebben?

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Craven
  • Registratie: Februari 2007
  • Laatst online: 21:42
Ga het zo presenteren/ inleveren. Ga nu niet meer coden moet me trein halen nog ff paar laatste checks doen en dan is het goed zo.

voor de geinteresseerden heb een 6 gekregen.

Meneer vond dat we naast de veel ingewikkeldere merge replicatie ook een standaard push en pull die eens in de week moest draaien hebben. En ik was vergeten om de geschreven scripts (niet bovenstaand) in een schedule te stampen... Maar goed i'm happy heb me studiepunten :P

[ Voor 55% gewijzigd door Craven op 06-11-2009 11:12 ]

Pagina: 1