Veritabanında bulunan store procedürlerin view’lerin ve functionların bazı kullanıcılar tarafından script almasının önüne geçebiliriz bunun için veritabanında bulunan bu ifadelerin create script’tini almamız gerekmektedir. Örnek üzerinden yapmamız anlaşılması açısından daha iyi olacaktır.

Tek yapmamız gereken with encryption ifadesinin ilgili yere yazılması.


Şifrelediğimiz view’in şifreli bir şekilde olduğu yukarıdaki resimde görülmektedir. Şimdi bu ifadenin script’li halini almaya çalıştığımızda bize hata mesajı verecektir.

Görmüş olduğumuz gibi create script’li hali kayboldu.
Bazı versiyonlarda aşağıdaki hatayı vermekte buda kullanmış olduğumuz SSMS sürümüne göre değişmektedir.

Şifrelenmiş olan bu objelerin şifrelerinin belirli bir süre sonra kaldırılması gerekmektedir. Bunun için SQL Decryptor tool’unu indirip kurmak gerekmektedir.
İlgili site üzerinde tool’u indirerek şifre çözme işlemini yapabiliriz.

Kurulumunu yaptıktan sonra bu program üzerinden sql server’ımıza bağlanıp ilgili şifrelemeyi kaldırıyoruz.

İlgili sunucumuza ve instance’ımıza bağlanmamız gerekmektedir.

İlgili veritabanımız altındaki şifrelemeyi silebiliriz. Sildikten sonra gerçek ssms’den şifrenin gittiğini görmüş oluyoruz.

Bu işlemi store procedure ve function için yapalım yapacağımız iş create scripttinden sonra with encryption eklemek.

Şifreli bir yapıya getirdikten sonra hata mesajları veriyor bunların sebebi
Property cannot be added. Property ‘MS_Description’ already exists for ‘dbo.uspGetBillOfMaterials’.
Burada önceden şifrelemeyi çözecek bir ifadenin olup olmadığını söylüyor.

Exec ifadelerini kaldırdıktan sonra hatanın ortadan kalktığını görmüş oldum.

Create script’leri aldığımızda en altta bulunan dizinlerin sıkıntı olmasıdır. İlgili dizinleri kaldırdıktan sonra sorunun ortadan kaybolduğunu gördüm .Store procedure içinde şifre çözme işlemini yapıyorum ssms’den kontrol ettiğimde şifrelenmiş procedure’ün şifresiz hala geldiğini görmüş oldum.


Yukarıda yaptığım işlemlerin aynısını function içinde yapabilirsiniz. Başka bir makalede görüşmek üzere..
“Allah’tan kulları içinde ancak ilim sahibi olanlar korkar.” Fâtır sûresi – 28