Vezi ce valoare are @@TRANCOUNT inainte si dupa apelul procedurii. In BOL de SQL 2005 exista un capitol "Rollbacks and Commits in Stored Procedures and Triggers" care pare sa fie OK si pentru cazul tau.
* Cred ca te poti lipsi de tranzactia "din jurul" lui select2 din exemplul tau (?). Btw, exemplul e cam "cetos"...