locked
Moved SSIS package from 32-bit dev machine to 64-bit windows server 2003 R2 SP2. Expressions no longer validate... RRS feed

  • Question

  • I have a package developed on a 32-bit Windows XP machine that has been successfully deployed to multiple production Windows Server 2003 R2 32-bit machines.

    I am trying to deploy it to my first 64-bit server (2003 R2) and having no success at all. Specifically, none of my Expressions are validating at runtime, but they do validate in the designer (using the default values for the variables contained within the expression).

    Here's an example of some of my errors (none of which occured in any 32-bit environment):

    1. The data types "DT_WSTR" and "DT_I4" are incompatible for binary operator "==". The operand types could not be implicitly cast into compatible types for the operation. To perform this operation, one or both operands need to be explicitly cast with a cast operator.

    2. Attempt to set the result type of binary operation "@[User::executionAddress] == 1" failed with error code 0xC0047080.

     3. The expression "@[User::executionAddress]==1 ? @[User::extractRoot_1] + "\\" + @[User::extractManagerIni]  : ("\\\\" + @[User::extractExeRemoteServer_2] + (@[User::remoteExecUser]=="" ? "" : " -u " + @[User::remoteExecUser]) + (@[User::remoteExecPwd]=="" ? "" : " -p " + @[User::remoteExecPwd]) + " \"" + @[User::extractManagerExe] + "\" \"" + @[User::extractRoot_2] + "\\" + @[User::extractManagerIni]  + "\"")" on property "Arguments" cannot be evaluated. Modify the expression to be valid.

    Again, all of these expressions validate in the designer, so I'm thinking that some of my variable values are not being set properly. I have a c# program that initializes many of the variable from for fields before executing the master package. They all seem to look O.K. within the debugger, but apparently aren't making it into my master package for some reason.

    Has anybody dealt with a similar situation? Any help would be greatly appreciated. Thanks in advance.

    Hank

    Friday, May 8, 2009 6:32 PM

Answers

  • The 32-bit SSIS Designer displays only 32-bit providers that are installed on the local computer. To configure a connection manager to use a specific 64-bit provider, you must install the 32-bit version of the provider on the development computer for use at design time. Even though the 32-bit version of the provider is installed, you can still run the package in 64-bit mode, both in the development environment and after deployment. The 32-bit and 64-bit versions of a provider have the same ID. Therefore, the SSIS runtime will select the appropriate version of the provider to use. For example, you run the package in the development environment on a 64-bit computer. By default, the package uses the 64-bit version of the provider because the default value of the Run64BitRuntime project property is True.

    ref: http://msdn.microsoft.com/en-us/library/ms141766.aspx

    http://effulgentlogs.blogspot.com
    • Marked as answer by Tony Tang_YJ Monday, May 25, 2009 6:58 AM
    Wednesday, May 13, 2009 8:15 AM

All replies

  • Make sure that you are casting the variable values to the right type in the C# application when applying them to the variable. It sounds like the data type may be getting changed by what you are doing in the C# app.
    John Welch | www.mariner-usa.com | www.agilebi.com | ssisUnit.codeplex.com
    Friday, May 8, 2009 6:36 PM
  • Thanks for the quick reply, jwelch. I've been through the c# app and checked my assignments. They all seem to be OK. As I mentioned in my first post, this entire program has been running successfully for over a year now in a 32-bit environment, and nothing has changed in the code.

    I'll double check my variable assignments again to be sure. Thanks.

    Hank
    Friday, May 8, 2009 6:43 PM
  • if i'm not mistaken, the integer datatype in the 64 bit version of ssis is Int64, not Int32.

    hth
    Duane Douglas, MCAD | http://www.ssisbi.com | Please mark the post(s) that answered your question.

    SSIS Business Intelligence

    Wednesday, May 13, 2009 7:39 AM
  • The 32-bit SSIS Designer displays only 32-bit providers that are installed on the local computer. To configure a connection manager to use a specific 64-bit provider, you must install the 32-bit version of the provider on the development computer for use at design time. Even though the 32-bit version of the provider is installed, you can still run the package in 64-bit mode, both in the development environment and after deployment. The 32-bit and 64-bit versions of a provider have the same ID. Therefore, the SSIS runtime will select the appropriate version of the provider to use. For example, you run the package in the development environment on a 64-bit computer. By default, the package uses the 64-bit version of the provider because the default value of the Run64BitRuntime project property is True.

    ref: http://msdn.microsoft.com/en-us/library/ms141766.aspx

    http://effulgentlogs.blogspot.com
    • Marked as answer by Tony Tang_YJ Monday, May 25, 2009 6:58 AM
    Wednesday, May 13, 2009 8:15 AM