Known Issues


PowerBuilder 2021 has the following known issues:

  • After you reset the DataWindowChild and the DataWindow, the application will crash when you execute the DataWindow’s InsertRow method. For solutions, refer to

  • In the ancestor object, if a structure contains a PowerObject array, when you assign a value to structure.powerobject[n], the same value will also overwrite the values of structure.powerobject[1] to structure.powerobject[n-1], that is, all of their values become the same as the value of structure.powerobject[n]. For solutions, refer to

  • If the appname in the PBT file has different letter case from the appname in the source code, the PowerServer unsupported feature analysis will not work, and PowerBuilde IDE will prompt to full build the application every time when the application is loaded.

  • The Echarts demo contains redundant scripts which cause the following full build error: echarts.pbl(echarts).echarts.echarts Class Declaration.16: Warning C0088: Duplicate property name: unsupportedapierror.

    Removing the following scripts can resolve the error:

    global type echarts from application
    boolean unsupportedAPIerror = true


PowerServer 2021 has the following known issues:

  • The PowerServer.Core package references the NuGet packages of all the supported databases’ providers, therefore, all database DLLs will be downloaded from the NuGet website to the PowerServer C# solution, regardless of which type of database is used. This issue will be resolved in the upcoming MR.

  • Warning MSB3270 (“There was a mismatch between …”) displays in the command window when you run the PowerServer Web APIs. It is an ignorable warning and will not affect the running of the Web APIs. The reason that it occurs is: The PowerServer.Core package references the NuGet packages of all the supported database providers, and the Informix NuGet package in it prefers the targeted processor architecture of the project be set to x64 instead of the current setting “Any CPU”. This issue will be resolved in the upcoming MR.

  • It happens sometimes in 64-bit environment that although .NET Core SDK (64-bit) is installed, when PowerServer Toolkit or SnapDevelop attempts to compile the PowerServer Web APIs, it throws the error “It was not possible to find any installed .NET Core SDKs”. For solutions, refer to

  • When creating a database connection with SQL server in the PowerBuilder IDE > Database Configuration window, the port number must always be 1433. To use a different port number, you will have to manually change the port number in the PowerServer C# solution (ServerAPIs project > AppConfig > Applications.json) after building and deploying the PowerServer project.

      "Connections": {
        "Default": {
          "sales": {
          "Port": 1433  //change the port number here
  • The Informix DateTime type cannot be converted correctly to C# properties.

  • Data in the Informix database cannot be retrieved in the multi-language environment.

  • When DataWindow PBSELECT contains the Exist keyword with multiple parameters, syntax error may occur. Workaround: Convert the PBSELECT statement to a SQL SELECT statement.

  • If the stored procedure or function uses a temporary table, dynamic creation through SyntaxFromSQL is not supported.

  • PowerServer logging may not record the errors of DataWindow Retrieve in some scenarios.

  • A Decimal value in PowerServer will always display the decimal portion, for example, 3.000 will be displayed as 3.000 in PowerServer, and 3 in PowerBuilder.

  • A dynamically created DataWindow does not support retrieving blob values or updating the stored procedure.

  • Data type incompatibility issue may occur. For example, when the Oracle TimeStamp type is compared with the DataWindow Time type, query error may occur.


  • Exceptions will occur when the stored procedure returns a value with precision over 28 digits, for example, dbms_random.value.

SQL Server

  • When connecting with the SQL Server database, only SQL Server Authentication is supported; Windows Authentication, Active Directory Password Authentication, and Active Directory Integrated Authentication are not supported currently.

    As a workaround to support Windows Authentication, you can set the Integrated Security to True in the Database Configuration > Advanced settings when creating the cache, or modify the value of OtherOptions to "Integrated Security=True" in the generated PowerServer C# Solution > ServerAPIs project > AppConfig > Applications.json file.

  • Dynamic format cannot execute the revert syntax. Workaround: execute as user= 'last user'.

  • When executing the stored procedure which contains a default value for the output parameter, PowerServer will fail to obtain the default value. For the code example below, PowerServer automatically uses null as the default value for the @v_out output parameter.

    Create PROCEDURE [dbo].[up_pro104_001]
      @v_in1 varchar(10) = 'in1', 
      @v_in2 varchar(10) = 'in2',
      @v_out varchar(10) = 'out' output,
      @v_in3 varchar(10) = 'in3'  
      Declare lp_proc03 Procedure For up_pro104_001 ;
      Execute lp_proc03;
      fetch lp_proc03 into :ls_result;

SQL Anywhere

  • PowerServer has strict rules to the order of the parameters when executing the stored procedure. The code example below will produce an error when executed in PowerServer.

    ls_tablename = "t_datatype_forupdate"
    ls_sql =  "execute sa_reset_identity  ?, new_identity=1;"
    prepare sqlsa from :ls_sql;
    execute sqlsa using :ls_tablename;

    To workaround this issue, you need to list all of the parameters in order as below:

    ls_sql =  "execute sa_reset_identity  ?, "dba", new_identity=1;"
  • TimeStamp data will fail to update in SQL Anywhere 16. Workaround: Upgrade to SQL Anywhere 17, or modify the model as below.

    1. Add the following class

    class DateTimeStringConvert : ValueConverter<DateTime, string>
                public DateTimeStringConvert() :
                    base(m => DateTime.Parse(m), m => m.ToString("yyyy-MM-dd hh:mm:ss.FFF"))

    2. Remove the SqlDefaultValue attribute from the TimeStamp columns, add the ValueConverter attribute to TypeName of the DwColumn attribute, and use the new class just added.

     [DwColumn("Sales.salesorderheader", "modifieddate")]
            public DateTime Modifieddate { get; set; }


  • The database stored procedure cannot ignore the input parameter, no matter the input parameter has a default value or not.


Please view here.