A eso se le llama Transaccionalidad, Prueba la siguiente sentencia en el query
analizer
Código SQL
[-]
Begin tran
Select Documentos, Nombre
From Personas
Insert
InTo Personas
(Documento, Nombre)
Values(1,'blabla')
Select Documentos, Nombre
From Personas
Rollback
Select Documentos, Nombre
From Personas
Ese bloque te regresa 3 datasets en el primero aún no existe el doc1
se procede a la insercion, en el segundo dataset existe el doc1
como el rollback deshace la transacción el dataset 3 no muestra el doc1
En resumen, utiliza una transacción para que solo hasta que sean confirmados los cambios se registren en la tabla, eso te evitará registros huérfanos.
Por cierto, si usas SqlServer es por que tendrás varios clientes, entonces lo mejor es que la transaccionalidad la dejes en el servidor haciendo uso de Procedimientos almacenados.
Suerte