Version 15 client compatibility

From SybaseWiki
Jump to: navigation, search

Sybase ASE version 15 supports "long identifiers". This means that for instance table and column names can be as long as 255 bytes. The application that connects to ASE 15 should be capable of handling these longer names.

In ASE 15.0.1 a check was introduced to see if the client that connects to ASE does support long identifiers. When this is not the case an errormessage is raised as soon as you try to use long identifers. However, this check has a few side effects:

  • stored procedures within the database that use long identifiers cannot be executed from a client that does not support long identifier. Even a simple exec <stored_proc> fails.
  • Since the errormessage is only raised once the application uses long identifiers, an application might run fine for some time, and then reports an error once a long identifier is used.

The error that is reported is Msg 103. Example:

Msg 103, Level 15, State 207:
Server 'ASE1', Line 1:
The identifier that starts with '[dbo.dmBOND_PARTIAL_SETTLEMEN' is too long. Maximum length is 28.

Some strange messages may appear immediately after the error, for instance:

Msg 11934, Level 16, State 1:
Server 'ASE1', Line 1:
REORG REBUILD of table 'dmBOND_PARTIAL_SETTLEMENT' failed due to an internal error. Please contact SYBASE Technical Support.

To prevent this check you can set traceflag 7717 as a workaround. You can set the traceflag in the runserver file or with the dbcc traceon statement:

dbcc traceon(7717)

A better solution is to upgrade the client library software.