Vidim neko me pretekao ali evo namestio sam mali primer pa se nadam da ce biti jasno
Code:
CREATE TABLE LookAtMe(ID INT PRIMARY KEY, carName NVARCHAR(100))
GO
INSERT INTO LookAtMe VALUES (1, 'BMW')
INSERT INTO LookAtMe VALUES (2, 'Mercedes')
INSERT INTO LookAtMe VALUES (3, 'Opel')
INSERT INTO LookAtMe VALUES (4, 'Ford')
INSERT INTO LookAtMe VALUES (5, 'Fiat')
INSERT INTO LookAtMe VALUES (6, 'Bugati')
GO
CREATE ROLE [FirstRole] AUTHORIZATION [dbo]
GRANT SELECT ON OBJECT::dbo.LookAtMe TO [FirstRole]
GO
CREATE ROLE [SecondRole] AUTHORIZATION [dbo]
DENY SELECT ON OBJECT::dbo.LookAtMe TO [SecondRole]
GO
CREATE LOGIN [MyLogin] WITH PASSWORD=N'none', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
CREATE USER [MyUser] FOR LOGIN [MyLogin] WITH DEFAULT_SCHEMA=[dbo]
GO
EXEC sp_addrolemember 'FirstRole', 'MyUser'
GO
Napomena : pre nego sto pokrenes ovaj script, moras imati dozvoljenu SQL autentikaciju i pokrenuti ovo kako sysadmin u managment studio i nemoj zatvarati konekciju.
E sad bi bilo valjda red da dam neko objasnjenje. Ovako, GRANT ti dodeljuje odredjena prava nekom objektu dok ih DENY zabranjuje. DENY uvek ima veci prioritet, sto znaci da ako je nesto stavljeno na DENY, bez obzira sto neki "database principal" ima negde dozvoljen(GRANT) pristup , DENY odnosi prevagu. U ovoj skripti sto sam ti dao kreirace se jedna tabela i popunice se sa nekim podacima, zatim ce se kreirati login i user koji ce ici preko tog login-a, kojem ce se na kraju dodeliti rolovi FirstRole i SecondRole.
Kada pokrenes ovu gore skriptu konektuj se ponovo na server ali sa MyLogin-om i sa sifrom : none
Klinki na New Query i pokreni ovo, i nemoj zatvarati query window:
Code:
SELECT * FROM LookAtMe
zatim se vrati na proslu konekciju (tamo gde si pokrenuo onaj gornji skript) i pokreni ovo
Code:
EXEC sp_addrolemember 'SecondRole', 'MyUser'
Posle ovog vrati se na prosli upit i pokreni ga. Sada bi trebalo da ti je zabranjen pristup. Ako uradis sledecu stvar:
Code:
EXEC sp_droprolemember 'SecondRole', 'MyUser'
i ponovo pokrenes upit - imaces pristup.
Eto, igraj se malo sa ovim i nadam se da ce ti biti jasno.