FDO Provider for ArcSDE

The Feature Data Objects (FDO) API provides access to data in a data store. A provider is a specific implementation of the FDO API that provides access to data in a particular data store. A provider is a specific implementation of the FDO API that provides access to data in a particular data store. ESRI® ArcSDE® (Spatial Database Engine) is part of the ArcGIS 9 system. ArcSDE manages the exchange of information between an (ArcGIS 9 Desktop) application and a relational database management system. FDO Provider for ArcSDE provides FDO with access to an ArcSDE 9-based data store, which, in this case, must be Oracle 9i (

Connecting to the ArcSDE Provider

This information supplements the Establishing a Connection chapter in the FDO Developers Guide.

You connect to an ArcSDE data store indirectly through the ArcSDE server. The underlying data source for the data store is a database, such as Oracle. The ArcSDE server is connected to the data source and mediates the requests that you send it.

You can connect to FDO Provider for ArcSDE in one step if you already know the name of the data store that you want to use. Otherwise, you must connect in two steps.

The minimum required connection properties for the initial call to Open() are server, instance, username, and password. Multiple users can access the data store. However, access is password-protected. The server property is the name of the machine hosting the ArcSDE server. The instance property acts as an index into an entry in the services file. An entry contains port and protocol information used to connect to the ArcSDE server. On a Windows machine, the services file is located in C:\WINDOWS\system32\drivers\etc. Assuming that the instance name is “esri_sde”, an entry would look something like this: “esri_sde 5151/tcp #ArcSDE Server Listening Port”.

An ArcSDE data source may contain more than one data store. For the first call to Open(), a data store name is optional. If successful, the first call to Open() results in the data store parameter becoming a required parameter and a list of the names of the data stores in the data source becoming available. You must choose a data store and call Open() again.

If the data source supports multiple data stores, the list returned by the first call to Open() will contain a list of all of the data stores resident in the data source. Otherwise, the list will contain one entry: “Default Data Store”.

If you know the name of the data store, you can provide it for the first call to Open() and make the connection in one step.

External Dependencies

The operation of FDO Provider for ArcSDE is dependent on the presence of ArcSDE 9 and a supported data source, such as Oracle 9i, in the network environment. The host machine running FDO Provider for ArcSDE must also have the required DLLs present, which are available by installing either an ArcGIS 9.1 Desktop application or the ArcSDE SDK. For example, the required DLLs are present if either ArcView®, ArcEditor®, or ArcInfo® are installed. For more information about ArcGIS 9.1 Desktop applications and the ArcSDE SDK, refer to the ESRI documentation.

Specifically, in order for FDO Provider for ArcSDE to run, three dynamically linked libraries, sde91.dll, sg91.dll, and pe91.dll, are required and you must ensure that the PATH environment variable references the local folder containing these DLLs. For example, in Microsoft Windows, if ArcGIS 9.1 Desktop is installed to C:\Program Files\ArcGIS, then the required ArcSDE binaries are located at C:\Program Files\ArcGIS\ArcSDE\bin. Similarly, if the ArcSDE SDK is installed to the default location, then the required ArcSDE binaries are located at C:\ArcGis\ArcSDE\bin. The absence of this configuration may cause the following exception message "The ArcSDE runtime was not found.".

ArcSDE Limitations

FDO Provider for ArcSDE must abide by limitations of the ArcSDE technology to which it connects.

The ArcSDE API does not support the following advanced functionality found in the ArcObjects API and the newer ArcGIS Server API:

  • Advanced geometries, such as Bezier curves and ellipses
  • Relationships
  • Topology
  • Networks
  • Linear referencing

If ArcSDE encounters curved segments, it will automatically tessellate them. This means that if you create a geometry containing an arc segment in an ArcSDE table using ArcObjects API and then you try to read that geometry back using the ArcSDE API, you will get a series of line segments that approximate the original arc segment. That is, you get an approximation of the original geometry.