Avatar billede rew Nybegynder
05. oktober 2004 - 09:01 Der er 4 kommentarer

Opret bruger med kun Read rettigheder

Er der nogen som har et script der på en given database kan oprette en bruger, som kun har read rettigheder på bestemte tabeller og ingen rettigheder på resten.
Avatar billede veronica Nybegynder
05. oktober 2004 - 10:05 #1
--- OPRETTELSE AF EN BRUGER KALDET newUser

if not exists (select * from master.dbo.syslogins where loginname = N'newUser')
    exec sp_grantlogin N'newUser'
    exec sp_defaultlanguage N'newUser', N'us_english'
GO

if not exists (select * from dbo.sysusers where name = N'newUser' and uid < 16382)
    EXEC sp_grantdbaccess N'newUser', N'newUser'
GO

-- HVIS DU VIL GIVE LÆSERETTIGHEDER PÅ ALLE TABELLER I DATABASEN MyDatabase..
Use [MyDatabase]
GO
exec sp_addrolemember N'db_datareader', N'newUser'
GO

-- HVIS DU VIL GIVE LÆSERETTIGHEDER PÅ TABELLEN MyTable I DATABASEN MyDatabase..
Use [MyDatabase]
GO
GRANT SELECT ON [MyTable] TO [newUser]
GO
Avatar billede rew Nybegynder
05. oktober 2004 - 11:04 #2
Hvis jeg smider scriptet direkte ind i QA og erstatter Mydatabase med et eksisterende databasenavn, klager den over at NewUser ikke eksisterer. Er det
fordi man skal erstatte NewUser med en eksisterende user på databasen ?

Er det muligt at selektere et udvalg af tabeller der skal gives læserettigheder på
når vi taler om 300 tabeller hvor de 100 skal undlades ?
Avatar billede veronica Nybegynder
05. oktober 2004 - 15:52 #3
Altså den første del - frem til den første kommentar - skulle gerne etablere brugeren som bruger på database-serveren. Først herefter kan du begynde at give brugeren rettigheder til databasen MyDatabase.

Jeg er i tvivl om, hvad du mener mht. at "selektere et udvalg tabeller" - altså, du kan skrive de navngivne tabeller i dit script som..

GRANT SELECT ON [MyTable1] TO [newUser]
GO
GRANT SELECT ON [MyTable2] TO [newUser]
GO
GRANT SELECT ON [MyTable3] TO [newUser]
GO
etc...

Men jeg kender ikke til nogen måde, hvorpå man kan lave et dynamisk grant ( ie. på en variabel med tabel-navnet.. er det ikke det du mener?)  Men du kan jo bruge SQL til at generere dit script - prøv at køre dette :


SELECT 'GRANT SELECT ON ' + name + ' TO newUser' + char(10) + 'GO' + char(10)+char(10)
FROM sysobjects
WHERE type='U'
ORDER BY name

Hvis du har så mange tabeller vil jeg i øvrigt nok råde dig til at bruge roller i stedet for at tildele rettigheder til den enkelte bruger.
Avatar billede rew Nybegynder
05. oktober 2004 - 16:12 #4
Jeg har fået lavet et lille script som man kan afvikle i QA og bede skrive til
fil, herefter kan filen så afvikles i QA og give GRANT på de ønskede tabeller.

Jeg tildeler dig point, da du har givet noget af løsningen. Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester