Hola,
Bueno el asunto no estan complejo. Lo que tienes que hacer (imagino es asi) es tener un campo autoincremental en la tabla, de manera que se asigne un valor distinto a cada registro. Normalmente ese numero es la clave principal del registro.
Para recueperar ese valor asignado al registro, debes ejecutar EN LA MISMA SESION con el SQL Server, es decir, la manera mas sencilla de hacerlo es insertar un "SELECT @@IDENTITY as codigo" (para mayor informacion te recomiendo la siguiente pagina:
http://www.kamath.com/tutorials/tut007_identity.asp
respecto al segundo tema, utiliza transacciones "BEGIN TRANSACTION" y "COMMIT" o "ROLLBACK"... hay suficiente información en todas partes respecto al uso de estas por lo que te lo dejo...
saludos, y sueeeerte