ağ üzerindeki kullanıcılar
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
ağ üzerindeki kullanıcılar
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
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
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
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
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
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.
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.
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
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
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
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
-
- Üye
- Mesajlar: 163
- Kayıt: 06 Nis 2006 12:22
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.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
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,
-
- Üye
- Mesajlar: 163
- Kayıt: 06 Nis 2006 12:22
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,
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,
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.
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.
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
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.
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
-
- Üye
- Mesajlar: 163
- Kayıt: 06 Nis 2006 12:22
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.Hakan Can yazdı:Yani o an bağlı olanlar vs. değil. O VT'de işlem yapmaya yetkili kullanıcılar vs. demek.
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,
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
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
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08