ağ üzerindeki kullanıcılar

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

ağ üzerindeki kullanıcılar

Mesaj gönderen White Rose »

s.a.

Firebird 1.5 VT+D7 ile yapmış olduğum bir projede;
Ağ üzerinde herhangi bir table üzerinde ekleme/silme/değişiklik yapan kullanıcının
adını (user name) öğrenebiliriyim.

Teşekkürler
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

sadece baglanan kullanıcı ismini ve kac baglantı kurdugunu gorebilirsin...
daha detaylı bilgiyi App.Server benzeri bir uygulama yazarak alabilirsin...
yada her tablo icin bir log tablosu olusturup insert,update ve delete triggerlarında o kayıtın bir kopyasını eklersin ek olarak user ismi islem tipi ve tarih saat ekleyebilirsin
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

s.a.

Teşekkür ederim qimirti kardeş, benim asıl derdim şu
ben event nesnesi ile table üzerinde yapılan değişiklikleri (silme/düzeltme/ekleme) görüyorum, ancak bunu hangi kullanıcının yaptığını bilmek istiyorum

Teşekkür ederim.
heskin35
Üye
Mesajlar: 132
Kayıt: 30 Haz 2004 09:48

Mesaj gönderen heskin35 »

Programda kullacı adı ve şifre belirleyerek giriş var mı?
Zira tüm kullanıcılar veritabanına sonuçta SYSDBA ile bağlanıyorlar mantık olarak.
Eğer sen program için ayrıyeten tablolara verdiğin işlemler için bi de işlem tarihi ve kullanıcı kodu eklersen bu şekilde daha kolay olur senin için.

Örneğin:
serverda ki Server kullanıcı adı ile giriş yapar ve bilmem hangi kaydı 12.01.2006 da değiştirir. Bu tablonun işlem ve kullanıcı alanına da trigger ile son işlem bilgisi ve bağlı kullanıc adı bilgisini aktarırsın. gibi.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

s.a.
programda kullanıcı tanımlaması var
yani SecurityService ile birkaç tane kullanıcı tanımlaması yaptım
table üzerinde bu kullanıcıların hangisinin işlem yaptığını görmek istiyorum.
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Sp veya trigger içerisinde current_user ile o an aktif olan kullanıcı ismini alıp veri satırındaki bir alana en son değiştiren kullanıcı diye kayıt edebilirsin.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

soyle bir sey yapabilirsin
user diye bir tablo olustur.1 tane kayıt gir
ID USERNAME
1 GOKMEN

mesaj_gonder isimli bir procedurde tablonun
ilk kaydını user (yada curren_user) ile gunceller ve mesajı gonderir
alan client ise tabloyu okuyarak kimin degisiklik yaptıgını anlar,

Sonra dusundun de aynı anda yapılan kayıtlar bu sistemde karısıklık olusturacak, ama aynı taban uzerine kurulmus bir sistem ile istedigin seyi yapabilirsin..
yani tablo yapısını istedigin olayı gercekleyecek sekilde duzenlemen lazım
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

arkadaşlara teşekkür ederim, bir deneyeyim.
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

gkimirti yazdı:sadece baglanan kullanıcı ismini ve kac baglantı kurdugunu gorebilirsin...
daha detaylı bilgiyi App.Server benzeri bir uygulama yazarak alabilirsin...
yada her tablo icin bir log tablosu olusturup insert,update ve delete triggerlarında o kayıtın bir kopyasını eklersin ek olarak user ismi islem tipi ve tarih saat ekleyebilirsin
Arkadaşlar çok özür diliyorum eski bir başlığı tekrar açtığım için. Ancak, FB'de (1.5) yukarıda söylenen şeyi yani bağlanan kullanıcı(lar)ın ismini ve kaç bağlantı yaptığını nasıl göreceğiz.

Bunu IBExpert yapıyor. Yani Active Users (AC) diye bir özelliği var. Bu özellik bağlı olan kullanıcıları gösteriyor.

Ben bunu nasıl yapabilirim. Yaptığım aramalar bir sonuç vermedi. Belki de doğru terimi aramadım.

Saygılarımla,
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

Arkadaşlar vaktinizi ve forum kaynaklarını tükettiğim için özürlerimi kabul ediniz.

Bu soruna bir çözüm buldum. TIBDatabaseInfo bileşenin UserNames diye TStringList tipinde bir özelliği var bu sayede listelenebiliyor.

Ancak bunu SQL ile yapmanın yolu var mıdır acaba?

Bir de başka bir problem daha var: Kullanıcı oluşturmama ve IBDataBase'i ve IBTransaction'ı açıp kapamama rağmen, kullanıcılar arasında benim kullanıcımın (diyelim ki AKIN) yanı sıra SYSDBA'da listeleniyor. Her halükarda SYSDBA bağlanıyor mu yoksa bir şeyleri mi kaçırıyorum.

Saygılarımla,
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

MS SQL'de connection bilgilerinin tutulduğu bir tablo var. Basit bir şekilde kimlerin hangi VT'ye bağlı olduğunu ve ne zaman bağlandığını vs. rahatlıkla bulabiliyorsunuz (SELECT * FROM ...). FireBird'de böyle bir tablo yok. Sizin UserNames dediğiniz hadise o VT'ye ait bütün kullanıcılar demek. Yani o an bağlı olanlar vs. değil. O VT'de işlem yapmaya yetkili kullanıcılar vs. demek.

Ya VT'yi değiştireceksiniz (ki bu forumda bu desteği bulacağınızı sanmıyorum) ya daha önce belirtildiği gibi bir user tablosu oluşturup bu işlemleri kendiniz yapmaya çalışacaksınız (çok meşakkatli ve aslında isteklerinizi tam karşılamayacak bir yol) ya da bir müddet örneğin bi 16 yıl daha bekleyip (artık FireBird 13.1'de falan koyarlar herhalde) bu özelliğin dahil edilmesini bekleyeceksiniz ve yahut da son olarak bu gibi uç düşünce ve isteklerden vazgeçip VT'nizin size sunduğu alanda at koşturacak ve günümüz narkozlanmış insanlarının çok iyi bir şekilde yaptığı gibi kendi sınırlandırılmış (ve daraltılmış ve de dayatılmış) dünyanızda mutlu bir hayat sürmeye devam edeceksiniz.

İyi çalışmalar.
Kullanıcı avatarı
Z.D.
Üye
Mesajlar: 104
Kayıt: 01 Nis 2006 01:48
Konum: İstanbul

Mesaj gönderen Z.D. »

ben bunu şu şekilde yapıyorum. mesela tablomda K_EKLEYEN ve K_DEGISTIREN varchar(15) tipinde alanlarım var. delphi tarafından hiç müdahale etmeden db tarafında bi trigger yazıyorum

Kod: Tümünü seç

CREATE TRIGGER HASTA_BEFINSUPD FOR HASTA
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin

  IF (INSERTING) THEN
      new.K_EKLEYEN = current_user;
  Else
      new.K_DEGISTIREN = current_user;

end
eğer tr'deki action mesajı insert ise K_EKLEYEN alanına, update ise K_DEGISTIREN alanına o an login olan user'ı set ediyorum.
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

Hakan Can yazdı:Yani o an bağlı olanlar vs. değil. O VT'de işlem yapmaya yetkili kullanıcılar vs. demek.
Sizin dediğiniz gibi olduğunuz zannetmiyorum. Çünkü üç deneme kullanıcısı daha var ve onlar listelenmiyor. Ayrıca SYSDBA'nın niçin orada olduğunu buldum. DataModule açık olduğu ve DataModule'de login bilgisi olarak SYSDBA tanımlı olduğu için SYSDBA da listeleniyor. Uygulamayı IDE dışından çalıştırdığımda ya da DataModule'u kapadığımda, SYSDBA listelenmiyor.

Bunu büyük ihtimal SQL komutlarıyla yapıyorlar ancak nasıl olduğunu bulmadım. İnternette sıkı bir aramayla bulabilirim zannediyorum. Zaten IBDataBaseInfo bilgisini de oradan elde ettim.

Saygılarımla,
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

Biraz araştırdım. SQL ile bu bilgiyi elde etmek sanırım mümkün değil. Gerçi IB 7 de geçici bir tabloda tutuluyormuş ama daha önceki versiyonlarda ve haliyle FB de service API ile alınabilen bir bilgi.

http://www.ibphoenix.com/main.nfs?a=ibp ... SE;ID='279' burda C ile yazılmış bir örnek var.

FB 2.0 release note a göre bu API 2.0 dada mevcut (eklemeler yapılmış.)

kolay gelsin
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Users tablosu kullanmak ve current_user ile işlem yapmak birbiriyle zıt işlemler.Current_user Veritabanı sisteminde kayıtlı ve login olmuş kullanıcıya ait istatistikleri tutabilir hazırlanan users tablosundaki kullanıcı bilgilerini değil bilginize.

Kolay gele..
Cevapla