use siempre con declaraciones como ;WITH entonces nunca obtendrás este error. El comando WITH requería un ; entre éste y cualquier comando anterior, usando siempre ;WITH nunca tendrás que acordarte de hacer esto.
consulte CON common_table_expression (Transact-SQL), de la sección Directrices para crear y usar expresiones de tabla comunes:
Cuando se utiliza un CTE en una declaración que forma parte de un lote, la declaración anterior debe ir seguida de un punto y coma.