Procedure Manager Errors

This section contains error messages for the Adaptive Server Procedure Manager.




Error 2805

Severity

20

Message text

Bad pointer 0x%lx encountered while remapping stored procedure '%.*s'.  Must re-create procedure.

Explanation

When a stored procedure is created, Adaptive Server stores an efficient, normalized form of the procedure called a query tree in the sysprocedures table. When you upgrade the server, the query trees for stored procedures and certain other database objects may be remapped to be compatible with the new release.

Error 2805 is seen in the following situations:

This error may be accompanied by Error 2812.

Action

If Error 2805 occurs following an upgrade, you can resolve the problem by dropping and re-creating the procedure.


Migration to Another Platform

If you see Error 2805 following an attempt to migrate data from one platform to another using dump database and load database, note that dumps and loads are not a supported mechanism for copying data between servers on different platforms. Instead, you will need to re-create and load the database manually using bulk copy.

For more information, refer to the Adaptive Server installation and configuration guide.

Versions in which this error is raised

All versions




Error 2806

Severity

20

Message text

Stored procedure '%.*s' is corrupted.  Must re-create procedure.

NoteThis error may be due to hardware problems.

Explanation

Procedure buffers are data structures that manage Adaptive Server stored procedures (and other compiled objects like triggers, rules, defaults, check constraints, and views) in the procedure cache. The server uses one procedure buffer for every copy of a named object stored in the procedure cache.

The Procedure Buffer Manager maintains an array of procedure buffers in memory, and controls and synchronizes access to procedure buffers. It maintains a usage count to determine whether a procedure buffer is in use.

Error 2806 is raised when the Buffer Manager detects one of the following problems:

Error 2806 results from corrupted procedure buffers. It may be related to hardware or operating system problems.

Action

  1. If this is an isolated error on a user stored procedure or trigger, drop and re-create the procedure to resolve the problem.

  2. If the error occurs on one or more system stored procedures (that is, procedures beginning with the "sp_" prefix), you will need to recreate the sybsystemprocs database where system procedures reside. Refer to "Recovering the sybsystemprocs Database" in the System Administration Guide.

  3. If other errors are reported (2806 errors during installation of a new server are often accompanied by 605 or other errors), follow the directions in this manual for recovering from those errors.

Additional information

Have the following information ready when you call Sybase Technical Support:

Versions in which this error is raised

All versions




Error 2811

Severity

18

Message text

Cannot create procedure dbid %d, objid %ld, with a group number of %d.

Explanation

This error occurs when Adaptive Server is unable to insert a row into the sysprocedures table. This can happen during creation of a procedure, view, or trigger, or during remapping of a compiled object.

The most common reason for Error 2811 is lack of data space to add the procedure, and therefore it is often raised following an 1105 error.

Action

Determine what errors occurred before the 2811 error by examining:

If an 1105 error occurred, refer to Error 1105 for recovery instructions. If errors other than 1105 occurred, follow the recovery instructions in this manual for those errors. If your manual does not include these instructions, call Sybase Technical Support.

Versions in which this error is raised

All versions




Error 2812

Severity

16

Message text

Stored procedure '%.*s' not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output).

Explanation

This error occurs when an attempt is made to execute a stored procedure that does not exist. If the procedure actually does exist, that is, it appears when sp_help is run with no parameters, Error 2812 can occur if you do not fully qualify the procedure name.

Adaptive Server's naming convention for database objects is as follows:

database.owner.object_name.column_name

The default value for database is the current database and the default value for owner is the current user. Remember that the owner is part of the object, so two different users can have two different procedures with the same object_name in the same database, for example user1.proc1 and user2.proc1.

If the procedure is not owned by the user attempting to execute it, and it is not owned by the database owner ( “dbo”), then all references to it must include the owner name. For example, suppose user1 creates a procedure called proc1. Any users other than user1 must prefix the procedure name with the owner name when executing it, that is, exec user1.proc1.

The system stored procedures are an exception to the naming convention. These procedures reside in the sybsystemprocs database, are owned by the Sybase system administrator, and have names starting with “sp_”. You can execute system stored procedures from any database and they will reference the system catalog of the current database. The search path for all “sp_” procedures is:

  1. The current database

  2. The sybsystemprocs database

  3. The master database

If Error 2812 occurs while running the installmaster script, it means that the sp_configure procedure was not found. You can ignore this.

If Error 2812 occurs while you are trying to dump or load a database, you may be trying to dump to an Adaptive Server rather than to a Backup Server.

Action

If you do not know who owns the procedure, use sp_help to display the owner. Run this procedure without any parameters to display objects owned by other users.

Alternatively, you can use the following query to determine who owns the stored procedure you are attempting to execute:

1> select name,owner=user_name(uid) 
2> from sysobjects 
3> where name = "procedure_name" 
4> go

If the procedure does not appear in the output of this query, it is either in a different database or does not exist.

If you do not own the procedure, qualify the procedure name with the owner name:

1> execute owner_name.procedure_name 
2> go

For procedures used by many users of a database, it is usually easiest if the database owner creates the procedure. This will allow any user to find the procedure without specifying an owner name.

If the procedure is not in the database where it is executed, fully qualify the procedure name with the database name:

1> exec database_name.user_name.procedure_name 
2> go

The owner name is not needed if you or the database owner own the procedure:

1> exec database_name..procedure_name 
2> go

Execute permission must be provided so other users can execute this procedure, but no permissions are required to see the text of the procedure.


System Stored Procedures

If this error occurs on system stored procedures, it might be resolved by running the installmaster script. This installs all of the system procedures and initializes various other Adaptive Server structures.


Backup Server

If Error 2812 occurs while you are trying to do a dump or load, you may be trying to dump to an Adaptive Server rather than to a Backup Server. Check your Backup Server assignment with the following command:

1> sp_helpserver SYB_BACKUP
2> go

The network_name column is the interfaces file that contains the entry for this Server.

Check the status of this Server:

1> exec SYB_BACKUP...sp_ps
2> go

Open Server applications have the stored procedure sp_ps while Adaptive Servers do not. Therefore, if this command fails because sp_ps is not found, most likely the Server defined for SYB_BACKUP is an Adaptive Server and not a Backup Server. If that is the case:

  1. Find out how the Backup Server should be defined.

  2. Drop the SYB_BACKUP entry using sp_dropserver.

  3. Add the correct entry using sp_addserver.

Additional information

Refer to the Transact-SQL User's Guide for information about naming conventions.

Refer to the Reference Manual for information about sp_dropserver and sp_addserver.

Versions in which this error is raised

All versions




Error 2824

Severity

19

Message text

Process %d cannot hold PROC_BUF 0x%1x named '%.*s' because it holds another PROC_BUF 01%1x named '%.*s'. A process can only hold one view, rule, or default at a time.

Explanation

Error 2824 can be caused by the following situations:

A process can hold many procedures and triggers but it can only hold one view, rule, or default at a time. If a process already holds a view, rule, or default, and Adaptive Server tries to add another one for the process, Error 2824 is raised.

Error 2824 can be caused in the following situations:

Action

Use sp_help view_name to determine whether a view that stored procedures or triggers reference has been dropped and re-created. If the creation time of the view is later than the creation time of the procedure or trigger that refers to it, drop and re-create the stored procedures and triggers that reference that view.

If the 2824 error persists, there is probably procedure cache corruption. Stop and restart Adaptive Server to clear the corruption.

Versions in which this error is raised

All versions




Error 2835

Severity

16

Message text

The procedure tree is old.  Use the sp_remap procedure to remap all the procedures in this database.

Explanation

When you execute a stored procedure, Adaptive Server checks to determine whether the procedure is already in cache. If the procedure is not in cache, Adaptive Server reads the procedure into cache from sysprocedures and recompiles it. Before Adaptive Server recompiles the procedure, it checks the Server release number of the procedure to make sure it is up to date for the current release. Error 2835 occurs when the procedure is not up to date for the current release.

This error can occur because the query remapping phase of an upgrade failed. If that is the case, all the query trees might need to be remapped.

Action

Use sp_remap to remap each procedure, trigger, rule, default, and view in the current database:

1> use database_name
2> go

1> sp_remap object_name
2> go

where database_name is the name of the database where the object resides and object_name is the name of the object to remap.

If you have many objects to remap, refer to “How to Remap All Objects in a Database” in the Encyclopedia of Tasks chapter.

Additional information

Refer to the Reference Manual for information about sp_remap.

Versions in which this error is raised

All versions