I'm afraid there's no 100% secure method to achieve what you want. You could protect Stored Procedure using WITH ENCRYPTION, but if somebody really wants to find out what your code does, he can find a way (e.g. with SQL Profiler).
If the issue is data sensitivity, you could encrypt the values before saving them in the database, but this will require you to modify your application and possibly add significant overhead. Also, unless you use some kind of obfuscation, your code can be reverse-engineered (actually, it can be even if you obfuscate it, it just takes longer).
In my experience, the most effective way to protect the data is via License Agreements. If customer tries to "play around" where he should not, then you have the rights to suspend support, charge extra fees to fix issues and, eventually, you have ground to sue them if you're afraid they "stole" your intellectual property.