1

Konu: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Merhaba,

MS SQL'de ;
Sorumu bir örnekle sormak istiyorum.
Musteriler isimli bir tabloda o firmanın müşteri bilgileri tanımlı olsun. Ancak bu müşteriler firmanın şubelerine göre ayrılmış olsun şöyle ki;

nSubeKodu    cKodMusteri   cMusteriAdi
01                 M001             A Müşterisi
01                 M002             B Müşterisi
02                 M003             C Müşterisi
02                 M004             D Müşterisi
03                 M005             E Müşterisi

MS SQL içerisinde her şube için ayrı bir kullanıcı oluşturarak bu tabloya yetki vermek istiyorum. Her kullanıcı kendi müşterilerini görebilmeli ve düzenleyebilmeli.

Select * From Musteriler
komutunu kullandığımda MS SQL bağlı olduğum kullanıcının yetikise bağlı olarak sadece o şubenin kayıtlarını getirmeli.

Acaba böyle bir şey yapmak mümkün mü?

/o---------------------o\
     www.haser.com
\o---------------------o/

2

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Bilgisayara kullanıcı tanıtımında hangi şubeye bağlı olduğunu sorup , sorgulamada bu şubeye bağlı müşterileri seçtirebilirsin.
örnek
------
kullanıcı=ali  şubesi=1 olsun

select * from müsteriler where nsubekodu=1

Not:aklıma gelen tek seçenek bu maalesef.

3

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

smile keşke dediğin kadar basit olsa
Ben bu şekilde bir çözüm aramıyorum. Kullanıcı MS SQL Server Management programına kendi kullanıcı adı ve parolası ile bağlandığında yazacağı sorgular o kullanıcın yetkisi doğrultusunda gelecek.

/o---------------------o\
     www.haser.com
\o---------------------o/

4 Son düzenleyen, ugurlu2001 (16.08.2008 10:49:51)

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Tarkan Hocam, sube kodu ve kullanıcı yetkilendirmesi için Ercan 'ın söylediğini destekliyorum.
Şöyleki:

Visual Fox Pro
lnSeciliSube = 01 && 1 Nolu Şube için işlem yaptığımızı düşünelim.

 
lcUserSubeFiltresi = "cKodMusteri <= 'M004'"
 
lcSubeFilter = ("nSubeKodu = " + 'ALLTRIM(STR(nSubeKodu))') + " AND " + lcUserSubeFiltresi
 
Select * From Musteriler Where (m.lcSubeFilter)
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

5

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Galiba tam olarak anlatamadım.

Ben program yazmaktan bahsetmiyorum. MS SQL Server kullanımından bahsediyorum. MS SQL Server Management Studio programını açtığınızda hangi SQL sunucusuna bağlanacağınızı ve kullanıcı adı ile parolası sorulur. Buradaki kullanıcı adı ve parolasını o SQL sunucusunun içindeki Securty-->Logins bölümünd tanımladığın kullanıcılardır. Örneğin "sa" kullanıcısı. Bu bölüme kullanıcılar tanımlarsınız ve bu kullanıcıların yetkileri vardır. Örneğin "Server Roles", User Mapping" gibi.

"User Mapping"'in altında o kullanıcının hangi veritabanına yetkisi olduğu hatta o veritabanına yazma, yedek alma, güvenlik ayarlama gibi yetkileri ayarlayabilirsiniz.

İşte bu kullanıcıyı öyle bir yetkilendirmeliyim ki kullanıcı MS SQL Server Management Studio'daki Query penceresinde Select * From Musteriler yazıp sorguyu çalıştırdığında kendi yetkisi doğrultusundaki kayıtları görebilsin. Hatta sadece kendi şubesine kayıt ekleyebilsin.

Sorun kendi yazdığım program olsan "Where" koşulunu yazarım wink

/o---------------------o\
     www.haser.com
\o---------------------o/

6

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

evet yapabilirsin. ben yaptım. bu komutlara bak:
sp_addrole
grant
sp_addlogin
sp_addsrvrolemember
sp_grantdbaccess
sp_addrolemember

bunların bir de drop'ları var. onlar da silmek için...
benim programımda tamamen foxpro formları ile istedikleri gibi yetkilendirme yapıyorlar.

sp_helprolemember ile de kimlerin ne yetkisi var öğrenirsin. ona göre select çekersin veya çekmezsin. yoksa hata verir...

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

7

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Tarkan,
Su anda vaktim yok, aklima gelen yollari birer satir yazayim:
-View
-Stored Procedure
-Distributed database, replication

8

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Metin, dediklerine bakacağım araya biraz iş girdi.
Çetin, acaba Metin'in dediklerine ek olarak mı yazdın?

/o---------------------o\
     www.haser.com
\o---------------------o/

9

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Evet ek olarak yazmistim.
-View ile sube bazinda filtreli olarak kullanabilirsin
-Stored procedurelar ile yine sube bazinda alip vermesini saglayabilirsin
-Distributed database ve replikasyonda da yine sube bazinda veriyi dagitabilirsin

10

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

View kısmını bizde düşünmüştük ancak daha iyi bir çözüm var mı diye araştıralım dedik. Metin'in dedikleri konusunda biraz araştıracağım.

Teşekkkür ederim.

/o---------------------o\
     www.haser.com
\o---------------------o/

11

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Metin,
Özellikle "Grant" olayına baktım ancak bir tablonun içindeki kayıtları kısıtlamayı bir türlü bulamadım.
Tablo, saha kısıtlaması
insert, update, select vs kısıtlamaları gördüm ancak benim sorduğum kayıt sınırlamasını bir türlü bulamadım.

/o---------------------o\
     www.haser.com
\o---------------------o/

12

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

sanırım bu durumda view kullanmalısın. ben sadece söylediğin insert,update,select için kullanıyorum. kullanıcıları oluştururken hepsine de birer server taraflı view oluşturman gerekiyor galiba. ben  server tabanlı view hiç kullanmadım. bunların tablodaki kayıtlarla birlikte güncellendiğini varsayıyorum. ama yine de işin zor.
bence bunlarla hiç uğraşma. inan dünyaca ünlü SAP programı bile böyle uğraşmamış... kendi içinde sanal kullanıcılar oluşturmuş. programı yazmayan biri için zaten kayıtlara girip tutarlı bir şekilde bir faturayı güncellemek filan çok zor... bişiy olmaz yani... ben bunu sadece bir programımda yaptım. diğer programlarımda yapmadım. ilk sql programımdı o. fazla optimisttim... smile

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

13

Re: Tablodaki kayıtların kullanıcılara göre yetkilendirilmesi

Anlaşılan View bu işi çözecek
Teşekkür ederim

/o---------------------o\
     www.haser.com
\o---------------------o/