Saves the schema cache of a database to an operating system file. Subsequent sessions can then share the same cache by using the Schema Cache File (-cache) parameter.
Syntax
SAVE CACHE
{ CURRENT | COMPLETE }
{database-name| VALUE ( char-expr ) }
TO
{pathname| VALUE ( char-expr ) }
[ NO-ERROR ]
|
- CURRENT
- Specifies that only the portion of the schema cache that applies
to referenced tables is saved to the file. By using this option
you can tailor a small schema cache file for an application that
does not use all the tables in the database.
- COMPLETE
- Specifies that the complete schema cache for the database is
saved to the file. If you use this option, the client process builds
a complete schema cache in memory including template records and
all trigger information for every table in the database.
-
database-name
- Specifies the literal logical name of a currently connected OpenEdge database.
-
pathname
- Specifies the literal pathname of an operating system file to
hold the schema cache. In Windows, the pathname cannot contain characters outside
of the non-Unicode code page. See OpenEdge Development: Internationalizing
Applications for more information about Unicode and code
pages.
- VALUE (char-expr)
- Returns the corresponding literal database name or pathname
specified by the character expression in char-expr.
- NO-ERROR
- The NO-ERROR option is used to
prevent the statement from raising ERROR and
displaying error messages.
Example
This
procedure saves the complete schema cache for each database that
you specify in the current working directory, and displays any error
messages associated with connecting or saving the cache:
r-schcsh.p
DEFINE VARIABLE db-name AS CHARACTER NO-UNDO FORMAT "x(12)" INITIAL ?.
DEFINE VARIABLE icnt AS INTEGER NO-UNDO.
DO WHILE db-name <> "":
SET db-name LABEL "Database Name"
WITH FRAME A SIDE-LABELS TITLE "Save Cache" VIEW-AS DIALOG-BOX.
IF db-name <> "" THEN
CONNECT VALUE(db-name) -1 NO-ERROR.
ELSE LEAVE.
IF NOT ERROR-STATUS:ERROR THEN DO:
SAVE CACHE COMPLETE VALUE(db-name) TO VALUE(db-name + ".csh") NO-ERROR.
IF NOT ERROR-STATUS:ERROR THEN
MESSAGE "Saved schema cache for" db-name "in" db-name + ".csh.".
ELSE DO:
BELL.
DO icnt = 1 TO ERROR-STATUS:NUM-MESSAGES:
MESSAGE ERROR-STATUS:GET-MESSAGE(icnt) VIEW-AS ALERT-BOX.
END.
END.
END.
ELSE DO:
BELL.
DO icnt = 1 TO ERROR-STATUS:NUM-MESSAGES:
MESSAGE ERROR-STATUS:GET-MESSAGE(icnt) VIEW-AS ALERT-BOX.
END.
END.
DISCONNECT VALUE(db-name) NO-ERROR.
END.
|
Notes
- The
schema cache is saved to the file in a binary format that is portable
across machines.
- For information on using an existing schema cache file, see OpenEdge
Data Management: Database Administration. For information
on the Schema Cache File (-cache) startup parameter,
see OpenEdge Deployment: Startup Command and Parameter Reference.
- Any schema changes to the database make the saved cache invalid.
If the schema cache file is invalid when the AVM tries to access
it, the AVM displays a warning message, ignores the file, and reads
the required schema cache from the database.
- To set up your database environment to use the CURRENT
option, you only have to connect to the database and read from the tables that compose the
schema you want to save. This is sufficient for the SAVE CACHE statement
to save all parts of each table in the schema, including template records and trigger
information. If you want to save a different subschema of the database, you must
disconnect and then reconnect to the database before reading the tables for that
subschema.
- For a DataServer, the AVM saves the schema cache for the entire schema
holder database. You cannot save the schema cache for a non-OpenEdge database separately.
For more information on schema cache files for DataServers, see the OpenEdge DataServer
Guides (OpenEdge Data Management: DataServer for Microsoft SQL
Server and OpenEdge Data Management: DataServer for
Oracle).