No comentas mucho sobre cuál es el objetivo de pasar los datos de una base a la otra, pero si el campo ID_Venta es la clave que define la relación entre T_Venta y T_Detalle en la base DB_Cliente, entonces no deberías cambiar su valor al pasar los datos a DB_Servidor, es decir, el campo ID_Venta en DB_Servidor no debería ser identity.
Dicho esto, tienes dos formas de pasar los datos con ID_Venta autoincremental manteniendo la relación entre las tablas (los ejemplos son pseudocódigo):
1. Un cursor más las funciones @@identity, scope_identity() o ident_current().
Código:
declare cur_t_venta cursor for
select * from db_cliente.dbo.t_venta
declare @fecha datetime
declare @cliente varchar
declare @monto int
declare @id_venta int
fetch next from cur_t_venta
into @fecha, @cliente, @monto, @id_venta
while @@fetch_status=0
begin
insert into db_servidor.dbo.t_venta
values (@fecha, @cliente, @monto)
insert into db_servidor.dbo.t_detalle
select articulo, monto, @@identity
from db_cliente.dbo.t_detalle
where id_venta = @id_venta
fetch next from cur_t_venta
into @fecha, @cliente, @monto, @id_venta
end
2. Un insert..select con un campo auxiliar más un update.
Código:
alter table db_servidor.dbo.t_venta add id_venta_original int
insert into db_servidor.dbo.t_venta
(fecha, cliente, monto, id_venta_original)
select fecha, cliente, monto, id_venta
from db_cliente.dbo.t_venta
insert into db_servidor.dbo.t_detalle
select articulo, monto, id_venta
from db_cliente.dbo.t_detalle
update db_servidor.dbo.t_detalle
set t_detalle.id_venta = t_venta.id_venta
from db_servidor.dbo.t_venta
where t_detalle.id_venta = t_venta.id_venta_original
alter table db_servidor.dbo.t_venta drop id_venta_original
Saludos