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
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 :
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.
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ğı.