User can not read Stored Procedure Source

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

User can not read Stored Procedure Source

Mesaj gönderen Uğur1982 »

Merhaba arkadaşlar...

Kod: Tümünü seç

User can not read Stored Procedure Source
Bu komutu bir Firebird vt'nin Metadata'sında gördüm..

Görüldüğü üzere 'Kullanıcı Stored Procedure kaynak kodunu okuyamaz' diyor.

..Yani Yazdığımız SP'yi gizleyebiliyoruz..Bu komutun kullanımı hakkında bilgi sahibi olan var mı?

Ya da Firebird de böyle bir şey var mı? yok sa ben mi yanlış gördüm...:)

İnterbase Pdf'lerine + Google 'a baktım bir şey bulamadım...

teşekkürler...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

GRANT komutu ile tablolara olduğu erişim yetkisi verilebildiği gibi Stored Procedure'lere de Execute (çalıştırma) yetkisi verilebilir.. Kaynak kodu gizleme işini doğrusu bilemiyorum :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Aslında bu işlem çok kolay çünkü stored procedure VT'ye kaydedildikten sonra source'unda ne yazdığı önemli değil. Yani source olmasa bile yine çalışmaya devam eder. O yüzden :

Kod: Tümünü seç

update rdb$procedures set rdb$procedure_source='User cannot see stored procedure source'; 
komutunu çalıştırdıktan sonra stored procedure kodu istenen şeyle değiştirilebilir, hatta silinebilir. Sanırım o VT'de yapılanda buna benzer bir işlem.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba...

Kod: Tümünü seç

update rdb$procedures set rdb$procedure_source='User cannot see stored procedure source';
Evet yukarıdaki kodla SP yi gizleyebiliyoruz..

Bir de gizlediğim SP'yi görmek istiyorum..Bunu nasıl yapabiliriz ?

Ayrıca bu yapılabiliyorsa Table,Trigger vs.lerde gizlenebilmesi lazım... :idea:

Not : Vt'nizi yedeklemeden denemeyin. :)

teşekkür ederim...
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Şöyle bir eşleme yaparsak sanırım doğru olur

Delphi Compiler = Firebird
Pas Dosyası = Strored Procedure Source
DCU = BLR

Delphide bir pas dosyasını derlediğinizde aynı ada sahip bir DCU dosyası oluşturulur. Firebirddede siz bir stored procedure oluşturduğunuzda stored procedure'e ait bir BLR kodu eklenir. Siz delphide Pas dosyasını silseniz bile dcu elinizdeyse projeyi derleyebilirsiniz. Aynı şekilde VT'de BLR varsa stored procedure çalıştırlabilir. SP'yi çalıştırdığınızda Source' bakılıp bir daha derlenmez (performans arttırmak için) dolayısıyla siz source'u silince bir sorun yok. Ama bunu geri getiremezsiniz, çünkü sildiniz.

Tablelarda böyle birşey yapılamaz çünkü VT bütünlüğü bozulur. Table gizlenemez silinir.

Trigglarda ise böyle bir yöntem çalışır heralde, denemedim bilmiyorum ama Firebird'ün trigger source diye bir alanda yazılan kodu tuttuğunu biliyorum, eğer SP mantığıyla işleniyorsa trigger source'da rahatça silinir. Tabi bu silme işlemini çalıştığınız değil dağıttığınız VT'de yapmanız lazım.

Ayrıca emin olmadığım bir nokta ise, Backup/restore işlemlerinde sorun yaratıp yaratmayacağı.
Cevapla