Preface
Purpose
Audience
Organization
Using this manual
References to ABL compiler and run-time features
References to ABL data types
Typographical conventions
Examples of syntax descriptions
Long syntax descriptions split across lines
Complex syntax descriptions with both required and optional elements
OpenEdge messages
Obtaining more information about OpenEdge messages
Introduction
DataServer for ODBC overview
DataServer components
DataServer for ODBC logic
The schema holder
Security
OpenEdge security
ODBC data-source security
DataServer utilities
DataServer demonstration databases
DataServer configurations
The local DataServer configuration
The remote DataServer configuration
Configuring distributed DataServer applications using ProBroker
Configuring distributed DataServer applications using the Unified Broker Framework
A closer look at the OpenEdge Explorer and Progress Explorer tool
Using the mergeprop utility
Typical configuration scenarios
Software requirements
Guidelines for using the DataServer
Using the DataServer for ODBC for the first time
Migrating an OpenEdge database to an ODBC data source
Upgrading to the Release 10 DataServer for ODBC
Programming Considerations
Database design issues
OpenEdge database objects and ODBC data-source objects
Naming conventions
ODBC data source limits
Code pages
Client code page
Indexes and sorting
USE-INDEX and BY clause considerations
Dummy indexes for sort order
Unique indexes
Large key entry support
Case sensitivity
DB2 UBD
Sybase
Interaction of code page, collation, and case sensitivity
ODBC data-source views
Triggers
OpenEdge sequences
Processing considerations for 32-bit and 64-bit data types
Processing activities that require additional action
Determining your application needs
User-defined data types
Arrays
Unknown values
Zero-length character strings
Unknown values and sorts
Record creation
Data-source record locking
Share locks
Exclusive locks
NO–LOCK
Locking impact on queries
Locking examples
The NO–WAIT option
DB2 UDB
Sybase
Transactions
Transaction scoping and buffer management
Error handling
Overflow checking
Cursors
Forward and backward scrolling
Impact of MAX-ROWS
Block cursors
Additional details about block cursor behavior
Block cursors on versus off
Block versus lookahead cursors
ABL issues
ROWID function
RECID function
Automated ROWID and RECID support
DEFINE BROWSE statement
Field lists
FIND statements
FIND NEXT statement
FIND PREV and FIND LAST statements
Compiling ABL procedures
R-code
FOR statements
BEGINS function
Unsupported ABL statements
Stored procedures
Defining native stored procedures to ABL
Running a stored procedure
Retrieving return codes
Retrieving output parameter values
Retrieving data-source results
Defining a view to use as a buffer
Sending SQL statements directly to the data source
Handling errors from stored procedures
Enhancing DataServer performance
Progress query types
Query tuning
Caching records
Join by SQL DB
Writing queries for performance
Skip schema verification
Replacing FIND FIRST for performance
Configuring the DataServer
DataServer components
DataServer configuration prerequisites
Configuring an ODBC driver and registering the data source
Configuring the ODBC driver
Registering your data source
Configuring a local DataServer
Configuring the remote DataServer
Configuring with Progress Explorer
Configuring from the command line
The ubroker.properties file
Editing the ubroker.properties file
Validating ubroker.properties content
Configuring multiple brokers
Using the NameServer
Creating a schema holder
Before you begin
General schema holder creation tasks
Establishing permissions
Permissions for creating or updating a schema holder
Permissions for connecting a schema holder
Application-specific permissions
Preparing to create the schema holder
Creating an empty OpenEdge database
Creating a schema holder
Maintaining a schema holder
Updating a deployed schema holder
Typical configuration for a remote client to connect to a remote DataServer
Configuring an ODBC data source
Starting a broker
Starting the schema holder to accept remote client connections
Connecting remote clients to an ODBC DataServer broker
Connecting the DataServer
Starting a local DataServer
Starting a remote DataServer
Starting and stopping a broker process from the Progress Explorer and connecting a client
On the Windows host
On the client
Starting and stopping a broker process using ODBMAN
Starting and stopping a broker process from the command line
Starting the Windows client process
Starting the UNIX client process
Connection guidelines
Connections and security in Windows
Connecting a schema holder
Connecting a schema holder at startup
Using a local DataServer configuration: examples
Using a remote DataServer configuration: examples
Unsupported connection parameters
Special connection issues
Query tuning with connection and startup parameters
Binding with connection and startup parameters
Analyzing performance
Local schema caching
Connection failures and OpenEdge responses
Connection troubleshooting
Managing connections to an ODBC data source
Accessing the DataServer log
The DataServer Tutorial
Demonstration databases for ODBC DataServers
Preparing to create demonstration databases
DataServer utilities
Creating a schema holder
Updating a schema holder
Verifying a schema holder
Changing connection information in a schema holder
Changing a code page in a schema holder
Deleting a schema holder
Migrating an OpenEdge database to an ODBC data source
Preparing a data source for the utility
Running the OpenEdge DB-to-ODBC utility
Running the utility interactively
Migration considerations for DB2
Running the utility in batch mode
Using the Adjust Schema utility
Modifying a schema holder
Modifying table-level information
Modifying field-level information
Defining the ROWID
Modifying tables to support ROWID function for Sybase
Modifying tables to support the ROWID function, using a DB2/400 database
Adding extended ABL support
Modifying tables to support arrays
Modifying tables to support case-insensitive indexes
Troubleshooting
Tuning your environment with the -Dsrv startup parameter
ODBC options
DataServer options
Using ODBC and DataServer options
DataServer connection options
Query result order: The PRGRS_ALWAYS_INDEX option
Concurrent query execution: The PRGRS_CACHE_CONN option
Connection problems: The PRGRS_CONNECT option
Key-buffer size: The PRGRS_IDBUF option
Locking error messages: The PRGRS_LOCK_ERROR option
Large rows: The PRGRS_MINBUF option
Schema import: The PRGRS_NO_INDEX option
SQL statements cache: The PRGRS_PREPCACHE option
Concurrent procedure results: The PRGRS_PROC_TRAN option
Cursor characteristics: The PRGRS_STABLE_CURS option
Wait time for asynchronous connections: The PRGRS_WAIT_DELAY option
RECID Buffer size—the ZPRGRS_RECID_BUF_SIZE,nnn Option
ODBC driver problems in Windows platforms
Upgrading DataServer Applications
Upgrading schema holders
Upgrading from one data source version to another
Stored Procedure Reference
CLOSE STORED–PROCEDURE statement
PROC–HANDLE function
PROC–STATUS function
RUN STORED–PROCEDURE statement
Server-Related Command Line Utilities and Startup Parameters
Progress Explorer command line utilities for the DataServer
NSCONFIG utility
NSMAN utility
ODBCONFIG utility
ODBMAN utility
PROBRKR command
DataServer startup parameters
ODBC Data Source Data Types
DB2 UDB data type equivalencies
Sybase data type equivalencies
OpenEdge® Data Management: DataServer for ODBC
Sybase data type equivalencies