Tidak jelas apa tujuan Anda:apakah Anda mencoba melindungi kekayaan intelektual; mencegah pengguna melihat informasi sensitif dalam kode sumber (misalnya kata sandi); mencegah pengguna MENGUBAH prosedur itu sendiri, atau sesuatu yang lain? Apakah pengguna Anda adalah pengguna internal di perusahaan Anda sendiri atau apakah mereka pelanggan eksternal? Apakah mereka meng-host database dan aplikasi atau Anda?
Untuk melindungi kekayaan intelektual:
- Minta pengguna Anda (pelanggan?) menandatangani NDA atau kontrak yang menetapkan syarat dan ketentuan Anda dan termasuk hukuman karena mengungkapkan kekayaan intelektual Anda
- Pindahkan informasi sensitif ke dalam layanan yang Anda host dan tampilkan sebagai layanan web
Untuk mencegah pengguna melihat kode sumber:
- BUAT PROSEDUR DENGAN ENKRIPSI - ini hanya mencegah pengguna 'normal' melihat kode, ini tidak akan menghentikan pengguna yang ditentukan dengan izin sysadmin
- Tulis prosedur CLR di .NET daripada menggunakan TSQL
- Pindahkan informasi sensitif ke dalam aplikasi klien yang dikompilasi
- Pindahkan informasi sensitif ke dalam layanan yang Anda host dan tampilkan sebagai layanan web
Untuk mencegah pengguna MENGUBAH prosedur:
- Jangan beri mereka izin yang diperlukan
Pada akhirnya, pengguna yang ditentukan dengan izin sysadmin akan selalu merekayasa balik, men-debug, mendekompilasi, atau mengungkap logika dalam kode Anda. Jadi, Anda harus sangat jelas tentang apa yang sebenarnya ingin Anda cegah, apa potensi dampaknya terhadap Anda atau perusahaan Anda, dan berapa banyak waktu dan uang yang ingin Anda investasikan untuk mencegahnya.