Puoi cifrare il corpo delle procedure tramite l'opzione WITH ENCRYPTION, in maniera simile a:
CREATE PROCEDURE dbo.up_test WITH ENCRYPTION AS
select 1
GO
Tieni però presente che non è un modo sicuro al 100% per cifrare il tuo codice (puoi glooglare per capire perchè).
Di certo è valido per utenti non così esperti.
E' altrettanto vero che può anche essere fatto reverse engineering di codice compilato .Net o di cari, vecchi, eseguibili VB6, ...
Capisco la tua esigenza, ma credo (parere personale) che l'importanza di una base dati siano le informazioni stesse e non tanto le procedure.
Se vuoi essere (abbastanza) certo che il tuo codice (ovvero la tua opera d'ingegno) non possa essere copiata passerei a scrivere stored procedure estese in C++, ma non so quanto sia fattibile...