Боюсь, что нет 100% безопасного метода для достижения того, что вы хотите. Вы можете защитить хранимую процедуру, используя WITH ENCRYPTION, но если кто-то действительно хочет узнать, что делает ваш код, он может найти способ (например, с помощью SQL Profiler).
Если проблема связана с чувствительностью данных, вы можете зашифровать значения перед их сохранением в базе данных, но для этого потребуется изменить приложение и, возможно, добавить значительные накладные расходы. Кроме того, если вы не используете какое-либо запутывание, ваш код может быть подвергнут обратному проектированию (на самом деле, это может произойти, даже если вы запутываете его, это займет больше времени).
По моему опыту, наиболее эффективный способ защиты данных - это лицензионные соглашения. Если клиент пытается «поиграть» там, где ему не следует, тогда у вас есть право приостановить поддержку, взимать дополнительную плату за устранение проблем и, в конце концов, у вас есть основания предъявлять иск, если вы боитесь, что они «украли» вашу интеллектуальную собственность .