Error de Sintaxis en sentencia WITH en SQL 2000

Waldo Araya
01 de Abril del 2011
Estimados, ojalá alguien me pueda ayudar.

Tenemos una aplicación hecha en VS.NET con SQL server 2005 y la estamos subiendo a un Hosting que funciona con Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) y usa un interfaz Web para administrar las bases de datos llamado ASP.NET Enterprise Manager 0.1.3.

Ya creamos todas las tablas de la BD en el hosting y subimos casi todos los Store Procedure, salvo 1 que me arroja un error de sintaxis que el SQL 2005 No arroja.

El mensaje de error es el siguiente:
ERROR: Line 8:Incorrect syntax near ';'. Incorrect syntax near the keyword 'WITH'. Incorrect syntax near the keyword 'end'. Source: .Net SqlClient Data Provider.

He borrado el punto y coma ';' y he modificado los paréntesis basado en literatura de Internet pero sigue arrojando otros errores de Sintaxis. Si alguien me puede ayudar se lo agradezco muchísimo!!!!! Gracias Anticipadas.

Les copio el SP:
CREATE PROCEDURE [dbo].[SP_REPROGRAMACION_REAL]
@cod_proyecto varchar(20),
@id_etapa varchar(20)
as
begin

;WITH afr1 AS (SELECT * FROM Avance_fisico_real)
update Avance_fisico_real
set
Cant_prog_parcial = afr1.Cant_prog_parcial,
Cant_prog_parcial_acum = afr1.Cant_prog_parcial_acum,
Cant_Avance_fisico = afr1.Cant_Avance_fisico,
Cant_avance_fisico_acum = afr1.Cant_avance_fisico_acum,
Porcen_prog_parcial = afr1.Porcen_prog_parcial,
Porcen_prog_parcial_acum = afr1.Porcen_prog_parcial_acum,
Porcen_real_parcial = afr1.Porcen_real_parcial,
Porcen_real_parcial_acum = afr1.Porcen_real_parcial_acum,
Costo_Planif_Parcial = afr1.Costo_Planif_Parcial,
Costo_Planif_Acum = afr1.Costo_Planif_Acum,
Costo_Teorico = afr1.Costo_Teorico,
Costo_Teorico_Acum = afr1.Costo_Teorico_Acum
from Avance_fisico_real afr2, afr1
where afr1.cod_proyecto = @cod_proyecto
and afr1.id_etapa = @id_etapa
and afr1.num_cambio_prog = ( select max(num_cambio_prog) - 1 from Avance_fisico_real
where cod_proyecto = afr1.cod_proyecto and
id_etapa = afr1.id_etapa and
Cod_partida = afr1.cod_partida and
Año = afr1.año and
Mes = afr1.mes and
semana = afr1.semana)
and (afr2.cod_proyecto = afr1.cod_proyecto
and afr2.id_etapa = afr1.id_etapa
and afr2.num_cambio_prog = afr1.num_cambio_prog + 1
and afr2.Año = afr1.Año
and afr2.Mes = afr1.Mes
and afr2.semana = afr1.semana
and afr2.cod_partida = afr1.cod_partida)

;WITH vf1 AS (SELECT * FROM Vista_Fisico)
update Vista_Fisico
set
Proyectado = vf1.Proyectado,
Real = vf1.Real,
Cumplimiento = vf1.Cumplimiento,
estado = vf1.estado
from Vista_Fisico vf2, vf1
where vf1.cod_proyecto = @cod_proyecto
and vf1.id_etapa = @id_etapa
and vf1.num_cambio_prog = (select max(num_cambio_prog) - 1 from Vista_Fisico where cod_proyecto = @cod_proyecto and id_etapa = @id_etapa )
and (vf2.cod_proyecto = vf1.cod_proyecto
and vf2.id_etapa = vf1.id_etapa
and vf2.num_cambio_prog = vf1.num_cambio_prog + 1
and vf2.Año = vf1.Año
and vf2.Mes = vf1.Mes
and vf2.semana = vf1.semana)

end