============================================================ WELCOME TO BORLAND SQL LINKS 2.5 FOR WINDOWS -------------------------------------------- This file contains important, late-breaking information about Borland SQL Links for Windows, including revisions to the documentation. Information in this file supercedes information in the SQL Links documentation. TABLE OF CONTENTS ----------------- 1. TIPS FOR USING SQL LINKS 2. KNOWN PROBLEMS 3. INTERBASE SQL LINK DRIVER 4. INFORMIX SQL LINK DRIVER 5. ORACLE SQL LINK DRIVER 6. SYBASE SQL LINK DRIVER 1. TIPS FOR USING SQL LINKS --------------------------- VENDOR DLLs If a vendor DLL is not found on the system, check the WINDOWS\SYSTEM directory. USING ALIASES WITHOUT SPECIFYING A LANGUAGE DRIVER If no language driver is specified, the default language driver is ASCII. Language-specific processes like character translation, sorting and table name validation will default to U.S. rules. For further information, see Chapter 3 of Borland SQL Links for Windows Getting Started and your driver's Connecting to... manual. WORKING WITH LARGE TABLES If you create data entry forms on large tables you might find some performance degradation,particularly if the user is allowed to view unrestricted record sets. The following suggestions can help cut down the load on your server and optimize server performance: - With large data sets, try to write applications that access relatively few records at a time. One way to do this within a form-based application is to create forms that order the data by index and set range criteria to limit the record set. (For example, instead of creating a form that displays all orders for all customers, write your application to limit the user's working selection by criteria such as customer name, state, and area code.) - Where possible, create applications that order on fields created with the REQUIRED (NOT NULL) option. Because this field property must be specified at the time of table creation, be sure to plan for this as part of your application design. WORKING WITH "SNAPSHOTS" (TABLES WITHOUT A UNIQUE INDEX OR ROW ID) If you insert records into a "snapshot" table, you might need to close and reopen the table to see your additions. NEW STATEMENT ROW COUNT PROPERTY The new statement property, stmtROWCOUNT, can be used with DbiGetProp for retrieving the effected row count of DELETE/UPDATE/INSERT statements. SYNONYM AND CROSS DATABASE / CROSS SERVER TABLE ACCESS Oracle and Informix synonyms can now be accessed using DbiOpenTable and DbiQPrepareExt. Tables on different databases or servers can also be accessed in the same way. For example, you can now open "SCOTT"."CUSTOMER"@"DBLINK" on Oracle and pubs.dbo.authors on Sybase. UPDATEABLE SQL QUERIES Updateable SQL queries are not supported with aliases that have the SQLPASSTHRU MODE parameter set to NOT SHARED. The SQLPASSTHRU MODE is a parameter that can be set by the BDE Configuration Utility for each SQL alias. 2. KNOWN PROBLEMS ----------------- UPDATING SNAPSHOTS--TABLES WITHOUT UNIQUE INDEX OR ROW ID When working with a table that does not have a unique index or row ID, keep the following in mind: - The SQL Links do not support record modifications and deletions on "snapshots" within an explicit client transaction. Emptying tables is supported within an explicit client transaction, but rolling back such an operation does not update the internal record cache. - To update the record cache, close the table and then open it again. UPDATEABLE SQL QUERIES Tables owned by another user must be qualifed by owner name. Use quotation marks around the entire qualified name, for example "OWNER.TABLE". 3. INTERBASE DRIVER ------------------- INTERBASE SQL LINK and LOCAL INTERBASE SERVER InterBase SQL Link installs a subset of the InterBase vendor DLLs necessary for Local InterBase Server. If you have an earlier version of Local InterBase Server on your computer when you install InterBase SQL Link, be sure to upgrade with the latest version. CONNECTING VIA FTP PC/TCP The connection to InterBase via FTP PC/TCP is sensitive to the amount of conventional memory available to DOS before Windows is started. You need at least 440 KB to use this connection protocol. ADDITIONAL VENDOR DLLs IUTLS.DLL and DSQL.DLL have been added. ADDITIONAL TRANSACTION ISOLATION LEVEL SUPPORT Read Committed is now supported. SETTING INTERBASE DRIVER FLAGS Specifying a Read Committed transaction isolation level can result in incompatibility with applications using earlier versions of SQL Links for InterBase. Earlier versions of SQL Links supported Reapeatable Read only. To maintain transaction support compatibility with earlier versions of SQL Links, use the BDE Configuration Utility to set the DRIVER FLAGS option to 512. 4. INFORMIX DRIVER ------------------ This release of Borland SQL Link includes two Informix drivers: SQLD_IN5.DLL SQLD_INF.DLL SQLD_IN5.DLL is an ESQL/C 5.x application supporting INFORMIX-NET for Windows Version 5.x. This driver supports multiple connections per workstation. When installing this driver, no Informix vendor support files are installed. All vendor files, such as LDLLSQLW.DLL, must be acquired directly from Informix. INFORMIX-NET for Windows Version 5.x supports any WINSOCK 1.1 Compliant DLL. SQLD_INF.DLL is an ESQL/C 4.x application supporting INFORMIX-NET PC Version 4.x. This driver is limited to one connection per workstation and may encounter some limitations with the INFORMIX LDLLSQLW.DLL (version 4.x) file. BDECFG.EXE & INFORMIX TSR (Informix ESQL/C 4.x driver ONLY) The Informix TSR contains entries for HOST NAME, USER NAME, and PASSWORD that over-ride any entries for SERVER NAME, USER NAME, and PASSWORD set for the Informix driver by using the BDE Configuration Utility. This is necessary because you cannot set or change SERVER NAME, USER NAME and PASSWORD from within your BDE application. Your BDE application accesses the database specified in the BDE configuration file (usually called IDAPI.CFG), but the server name, user name and password will always reflect what was set up through the Informix REMSQL or SETNET programs. For ANSI-compliant databases, the user name specified in the configuration file is used to qualify object names when accessing tables. If you encounter privilege problems, make sure that the USER NAME in your configuration file matches the USER NAME that was specified when REMSQL or SETNET was executed. WINDOWS MEMORY PROBLEMS AND CONNECTING TO INFORMIX If there are a number of Windows applications open when you attempt to connect to Informix through your BDE application, you may see Informix error message #837: Not enough memory available. Exit Windows, then re-start Windows and your BDE application. If the problem continues you might need more workstation memory. LIMITATIONS ON OPENING TABLES This edition of the Informix SQL Link driver does not support opening a table with a column name that is an Informix keyword or function name. Some examples include MONTH, DAY, YEAR, AVG, COUNT, ALL, and UNIQUE. For a complete list of keywords and function names, see your Informix documentation. COPYING INFORMIX TABLE WITH INTERVAL COLUMN When an Informix table with an interval column is copied, the destination table is created with an interval that has a qualifier of year-to-month. If this qualifier does not match the source table's interval qualifier, you will receive an error during the copy. To work around this problem, use passthrough SQL to create the destination table with the correct interval qualifier. Then append the contents of the source table to the destination table. INFORMIX ERROR MESSAGES WITH EMBEDDED FORMAT STRINGS For certain error messages (such as "Table not found"), the Informix error message contains an embedded "%s" instead of a variable name. FTP/INFORMIX CONNECTION WITH INFORMIX NET PC 4.X AND FTP System configuration: The dos path should include: C:\PCTCP;C:\INFORMIX\BIN Enter in your AUTOEXEC.BAT (by using odi and PCTCP dos/win network drivers) SET FTP_ETC=C:\ETC (per Informix docs if using FTP software) STORED PROCEDURE SUPPORT IN SQLD_IN5.DLL The new Informix driver supports stored procedures. Please note the following points: 1. Informix stored procedures have input params but no output parameters. 2. DbiOpenSPParamList returns all input parameters and sets SPParamDesc.uParamNum and SPParamDesc.szName starting from 1. SPParamDesc[0].uParamNum = 1 SPParamDesc[0].szName = "1" and SPParamDesc[0].eParamType = paramIN; . . . The rest of the information for SPParamDescs (such as uFldType, usubType, iUnits1, iUnits2, uOffset, uLen, and uNullOffset) must be set by user. 5. ORACLE DRIVER ---------------- SUPPORT FOR QUOTED OBJECT NAMES This release of SQL Links supports the creation of Oracle tables with quoted object names. Object names enclosed in double quotation marks may contain spaces, special characters, reserved words, or mixed case. When querying a table with special object names, be sure to enclose the name in double quotation marks. For example: SELECT * from "Customer" For more information on object naming rules, see your Oracle server documentation. ADDITIONAL TRANSACTION ISOLATION LEVEL SUPPORT Repeatable Read is now supported. A Repeatable Read transaction is always read-only. SETTING ORACLE DRIVER FLAGS Using mixed-case object names can result in incompatibility with earlier versions of SQL Links for Oracle. Earlier versions of SQL Links used uppercase object names only. To use uppercase object names only, set the DRIVER FLAGS option to 1 using the BDE Configuration Utility. Specifying a Repeatable Read transaction isolation level can result in incompatibility with applications using earlier versions of SQL Links for Oracle. Earlier versions of SQL Links supported Read Committed only. To maintain transaction support compatibility with earlier versions of SQL Links, use the BDE Configuration Utility to set the DRIVER FLAGS option to 512. To use uppercase object names only AND maintain transaction support compatibility with earlier versions of SQL Links, use the BDE Configuration Utility to set the DRIVER FLAGS option to 513 (representing 512+1). TRANSLATING AN ORACLE DATE FIELD TO dBASE In Table 1.8 of CONNECTING TO ORACLE it is stated that Oracle DATE fields translate to dBASE DATE fields. This is incorrect. They actually translate to dBASE character fields with date and time information. RUNNING NETINIT.EXE BEFORE STARTING YOUR BDE APPLICATION If you are using SQL*Net for DOS, depending on your system memory configuration you may need to load the Oracle NetInit program (NETINIT.EXE) before you start your BDE application. ORACLE UPDATEABLE QUERIES All names, both column and table, are case sensitive (as if they were quoted explicitly). ORACLE BLOCK WRITE SUPPORT Support for Oracle array binding in this release shows improved performance for block writes when using DbiBatchMove and DbiWriteBlock. SQL LINK UNDER OS/2 WARP WITH IBM TCP/IP 2.0 NETWORK CONNECTION You must install three layers: a) Oracle CDE CASE Tools, Version 5.1, Windows and Win-OS/2 b) Oracle Products for Windows, Version 7.1, 2/1/95 c) SQL VDM to interface the DOS-to-OS2 connection CONFIGURING BDE FOR USE WITH ORACLE SQL*NET V2.0 In all cases you need to make sure that the 'Network Protocol' entry is blank in the alias manager. Also make sure that the SQL Link Oracle driver's (not just the alias) "Net Protocol" is blank. Using the BDE Configuration Utility, enter: TNS:myservername into the 'Server Name' setting - also in the alias manager (if you configured only for one server it might be necessary to type in 'TNS' for the 'Server Name') PERSONAL ORACLE7 CONNECTION ISSUES Possible solution to Error Message: (ORA-01034 Oracle7 not Available),when trying to connect to Personal Oracle7: Make sure Personal Oracle7 is loaded and running before trying to connect via the Alias Manager. (The username is oracle7 and the password is oracle). Possible solution to Error Message: (ORA-03121 NO INTERFACE DRIVER CONNECTED), when trying to connect to Personal Oracle7. In the BDE Configuration Utility, 1) Set Vendor Init to ORA7WIN.DLL. 2) Set NET PROTOCOL to blank. In ORACLE.INI, 1) Remark out any settings referring to - LOCAL=X:SERVERNAME (it should be LOCAL=2:) REMOTE=X:SERVERNAME In Alias Manager, 1) Net Protocol = 2 2) Server Name = SERVERNAME Possible solution to Error Message: "ORA-09368: Windows 3.1 Two-Task driver unable to spawn Oracle." If you get this when trying to start Personal Oracle7 (via Oracle Database Manager), it might mean that you are low on Windows resources. 6. SYBASE DRIVER ---------------- ADDITIONAL TRANSACTION ISOLATION LEVEL SUPPORT An error (DBIERR_NOTSUPPORTED) is returned if Repeatable Read is specified. Specifying a Repeatable Read transaction isolation level might result in incompatibility with applications using earlier versions of SQL Links for Sybase. Earlier versions of SQL Links supported Read Committed only. To maintain transaction support compatibility with earlier versions of SQL Links, use the BDE Configuration Utility to set the DRIVER FLAGS option to 512. USING DEFAULT SYBASE DRIVER FLAGS SETTING If your Sybase SQL Server faults while executing BLOB reads or BLOB writes, check the SQL Link driver's DRIVER FLAGS parameter. If DRIVER FLAGS is set to 0 (the Sybase default): 1. Call Sybase Customer Support and describe the problem, referencing Case #125046. 2. Set the DRIVER FLAGS parameter to 1. Use this DRIVER FLAGS setting until you receive the necessary software fix from Sybase. Setting DRIVER FLAGS to 1 will enable you to execute BLOB reads and BLOB writes without causing a server fault. This may cause the client to receive SQL Server timeouts during BLOB writes. To execute BLOB reads and writes AND maintain transaction support compatibility with earlier versions of SQL Links, use the BDE Configuration Utility to set the DRIVER FLAGS option to 513 (representing 512+1). MULTIPLE RESULT SETS The Sybase SQL Link driver does not support the use of stored procedures that return multiple answer sets. SYBASE INDEX HINT FOR UPDATEABLE QUERIES This release of SQL Link has added support for Sybase's forceindex hint for query optimization when performing updateable queries. For example, the following query is now a valid updateable query: SELECT * FROM CUSTOMER (2) SYBASE URGENT PARAMETER AND TABLE CLOSE PERFORMANCE The use of the URGENT parameter is supported by the named pipes driver, the Novell NetWare networking software (SPX/IPX) as well as many TCP/IP networking packages: (Note: the dll's specified in the following examples are network and network transport specific.) myNLMsrvr=C:\SQL\BIN\WDBNOVSP,04200020,1,83BD,URGENT myUNIXsrvr=C:\SQL\BIN\WDBNOVTC, 128.0.168.245, 1425, URGENT myNamedPipesrvr=C:\SQL\BIN\DLL_NAME,\\MY_SRVR\ROOT, URGENT The Sybase Open Client documentation erroneously notes that Novell's LanWorkPlace does not support the URGENT parameter. You actually need a version of LanWorkPlace version later than 4.0 Lan WorkPlace for OS/2 is compatible only with version 3.0. Certain DB-Library (W3DBLIB.DLL) versions may not work properly regarding dbcancel() (Files dated 10-09-92 and 6-1-94 may be among these.) URGENT requires Out of Band Data (OOBD) support and is necessary for Sybase's dbcancel() to work effectively. Dbcancel() is called to cancel the retrieval of un-read result sets. In order to properly support OOBD, your Solaris-based server may need a call to ndd to set its tcp_rexmit_interval_max parm. The call is: /usr/sbin/ndd -set /dev/tcp tcp_rexmit_interval_max nnnn where nnnn is a number of milliseconds. You might see a delay when clicking on the master grid of a master-detail form - the query to retrieve the data for the detail might not return for several minutes. By default, the TCP protocol will wait until a packet is full before sending it. This will generally help packet transmission over large networks because it cuts down on the number of packets sent. This can often slow the performance of client applications. If the server needs to send 750 bytes to an application and is using 512-byte packets, the client will see a delay while the server waits on 274 bytes of additional data. It might be possible to disable this on the SQL Server itself. This can be done by adding a trace flag to the RUN_SERVER file, -T1610. ============================================================