Package migration from version 3 to version 2 failed with error 0xC001700A. The version number in the package is not valid. The version number cannot be greater than current version number.

I guess at least once every SQL developer might have come across this error on SQL Server 2008 while running a SQL job that calls a package.

Reason for the error: Old version of the DTEXEC is picked up by SQL Server instead of the new one. That means, the exe shipped with 2005 is picked up when it is expected to use the one shipped with 2008. So, obviously this happens when SQL Server 2008 is running along with SQL Server 2005 on the same machine. As a result of this, we end up with two versions of DTEXEC executables. One residing in SQL Server 2005 path ("C:\Program Files\Microsoft SQL Server\90\DTS\Binn") and the other in SQL Server 2008 path ("C:\Program Files\Microsoft SQL Server\100\DTS\Binn").

Fix for the error: There are three workarounds to correct this.

1. Hard code the path of SQL Server 2008's DTEXEC while calling the SSIS package as shown below.

C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTEXEC.exe /F "D:\MyFolder\MyPackage.dtsx"

2. Rename the old exe in the 2005 path to a different name (Example:- C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTEXEC_Old.exe)

3. Go to PATH environmental variable and edit it in such a way that "C:\Program Files\Microsoft SQL Server\100\DTS\Binn" path appears well before the "C:\Program Files\Microsoft SQL Server\90\DTS\Binn" path.

Please drop me a note if this has helped you.