Não está claro qual é o seu objetivo:você está tentando proteger a propriedade intelectual; impedir que os usuários vejam informações confidenciais no código-fonte (por exemplo, senhas); impedir que os usuários alterem os próprios procedimentos ou algo mais? Seus usuários são usuários internos em sua própria empresa ou são clientes externos? Eles hospedam o banco de dados e o aplicativo ou você?
Para proteger a propriedade intelectual:
- Os usuários (clientes?) assinaram um NDA ou contrato que especifica seus termos e condições e inclui penalidades pela divulgação de sua propriedade intelectual
- Mova as informações confidenciais para um serviço que você hospeda e expõe como um serviço da Web
Para evitar que os usuários vejam o código-fonte:
- CRIAR PROCEDIMENTO COM CRIPTOGRAFIA - isso apenas impede que usuários 'normais' vejam o código, não parará um determinado usuário com permissões de administrador de sistema
- Escreva um procedimento CLR em .NET em vez de usar TSQL
- Mova as informações confidenciais para um aplicativo cliente compilado
- Mova as informações confidenciais para um serviço que você hospeda e expõe como um serviço da Web
Para evitar que os usuários alterem os procedimentos:
- Não dê a eles as permissões necessárias
No final, um determinado usuário com permissões de sysadmin sempre fará engenharia reversa, depurará, descompilará ou descobrirá a lógica em seu código. Portanto, você precisa ser muito claro sobre exatamente o que está tentando evitar, qual é o impacto potencial sobre você ou sua empresa e quanto tempo e dinheiro está disposto a investir na prevenção.