Progress(R) DataDirect(R)
     Progress(R) DataDirect(R) for JDBC(TM) for SQL Server(TM) Driver
     Release 6.0.0 
     December 10, 2019

Copyright (C) 2019 Progress and/or its 
subsidiaries or affiliates. All Rights Reserved.


Installation Directory
Progress DataDirect for JDBC for SQL Server Driver
Changes since 6.0.0
Release 6.0.0 Features
Notes, Known Problems, and Restrictions
Installed Files


The driver requires a Java Virtual Machine (JVM) that is Java SE 8 or higher,
including Oracle JDK, OpenJDK, and IBM SDK (Java) distributions.

     Installation Directory

The default installation directory for the driver is:

* Windows:
  C:\Program Files\Progress\DataDirect\JDBC_60

* UNIX/Linux:
  Note: For UNIX/Linux, if you do not have access to "/opt", your user's home
  directory will take the place of this directory.
    Progress DataDirect for JDBC for SQL Server Driver

The driver supports the JDBC API for SQL read-write access to Microsoft SQL
Server and Microsoft Azure, including Azure SQL Data Warehouse and Microsoft
Analytics Platform System.

* The driver supports all JDBC Core functions.

* The driver supports the core SQL-92 grammar.

    Changes since 6.0.0

* The driver has been certified with SQL Server 2019
  Driver version (F000439.U000220)

* The driver has been certified with Oracle JDK 11
  Driver version (F000147.U000072)

* The driver has been certified with OpenJDK 11.
  Driver version (F000147.U000072)

* The driver has been certified with OpenJDK 8 on Windows and Linux.
  Driver version (F000147.U000072)

* The driver has been enhanced to support the Always Encrypted feature. 
  Beginning with SQL Server 2016, Azure SQL and SQL Server databases support 
  Always Encrypted, which allows sensitive data to be stored on the server in
  an encrypted state such that the data can only be decrypted by an authorized
  application. The following are highlights of this enhancement:
  - The driver detects all supported native data types stored in encrypted 
    columns and transparently encrypts values bound to SQL parameters or 
    decrypts values returned in results.
  - The driver supports configurable caching of column encryption keys for 
    improved performance.
  - The driver supports using Java KeyStore and Azure Key Vault as
    keystore providers.

  You can enable support for Always Encrypted using the following new options:
  ColumnEncryption, AEKeyCacheTTL, AEKeystoreClientSecret, AEKeystoreLocation, 
  AEKeystorePrincipalId, and AEKeystoreSecret. Refer to the user's guide for 
  more information.
  Important: Always Encrypted support requires the driver to run on a Java 
             Virtual Machine (JVM) that is Java SE 8 or higher.

  For a list of limitations for the Always Encrypted feature, see "Notes, 
  Known Problems, and Restrictions."

* The version of Bouncy Castle that ships with the driver has been upgraded to 
  1.60, which fixes the following security vulnerabilities:
  - CVE-2018-1000613
  - CVE-2018-1000180
  - CVE-2017-13098
  This upgrade is available starting in build of the driver. For 
  more information on the vulnerabilities resolved by this upgrade, refer 

    Release 6.0.0 Features

Support and certifications
Visit the following web pages for the latest support and certification

* Release Notes

* Supported Configurations

* DataDirect support matrices

* The driver has been enhanced to connect to Microsoft Azure SQL
  Data Warehouse and Microsoft Analytics Platform System data sources. 

* The driver has been enhanced to support Always On Availability Groups.
  Introduced in SQL Server 2012, Always On Availability Groups is a replica
  database environment that provides a high-level of data availability,
  protection, and recovery.

* The driver has been enhanced to support Azure Active Directory authentication
  (Azure AD authentication). Azure AD authentication is an alternative to SQL
  Server Authentication that allows administrators to centrally manage user
  permissions to Azure SQL Database data stores.

* The driver has been enhanced to support Kerberos Constrained Delegation.
  Sometimes referred to as impersonation, Constrained Delegation allows the
  driver to establish a connection with credentials passed via a GSSCredential

* For Kerberos authentication environments, the following changes have been
     - The driver no longer sets the system
       property to force the use of the installed JDBCDriverLogin.conf file as
       the JAAS login configuration file. By default, the driver now uses the
       default JAAS login configuration file for Java, unless you specify a
       different location and file using the
       system property. 
     - The driver no longer sets the system property to
       force the use of the krb5.conf file installed with the driver jar files
       in the /lib directory of the product installation directory.

* Added the RegisterStatementPoolMonitorMBean connection property. Note that the
  driver no longer registers the Statement Pool Monitor as a JMX MBean by
  default. You must set RegisterStatementPoolMonitorMBean to true to register
  the Statement Pool Monitor and manage statement pooling with standard JMX API

* Support for result set holdability has been added to the driver.

Changed Behavior
* Java SE 7 has reached the end of its product life cycle and will no longer 
  receive generally available security updates. As a result, the drivers will 
  no longer support JVMs that are version Java SE 7 or earlier. Support for 
  distributed versions of Java SE 7 and earlier will also end, including
  IBM SDK (Java Edition). 

* Support for DLL-based NTLM authentication has been deprecated. As a result,
  the AuthenticationMethod property has been updated to no longer support the
  ntlm value. If the value is specified, the driver throws an error when 
  attempting to connect. 

     Notes, Known Problems, and Restrictions
The following are notes, known problems, and restrictions with the 6.0.0
release of the driver.
Always Encrypted Limitations
The following limitations apply to the current implemantation of Always 
Encrypted support: 
 * No support for encrypted parameters in stored procedures
 * No support for encrypted values in updateable result sets
 * No support for Windows certificate store or custom keystore providers
 * No support for enabling Always Encrypted on individual statements. Support for 
   encrypted columns can only be set at the connection level.		 
Using Bulk Load
For optimal performance, minimal logging and table locking must be enabled.
Refer to the following Web sites for more information about enabling minimal

Table locking, a bulk load option, is enabled by default. Table locking prevents
other transactions from accessing the table you are loading to during the bulk
load. See "Bulk load properties" in the user's guide for information about
configuring the driver for bulk load operations.

System.exit() method and Process Termination
The System.exit() method ensures that all registered shutdown hooks are run.
Applications terminate faster when System.exit(0) is used. When applications 
omit the System.exit() call, the termination process may linger for about 10 
seconds before exiting.

Executing DataDirect Shell Script
For UNIX/Linux users: If you receive an error message when executing any
DataDirect for JDBC shell script, make sure that the file has EXECUTE 
permission. To do this, use the chmod command. For example, to grant EXECUTE 
permission to the file, change to the directory containing and enter: 

chmod +x

JDBC Methods
The following notes on JDBC methods apply generally to Progress DataDirect for
JDBC drivers.

* The driver allows PreparedStatement.setXXX methods and ResultSet.getXXX
  methods on Blob/Clob data types, in addition to the functionality described in
  the JDBC specification. The supported conversions typically are the same as
  those for LONGVARBINARY/LONGVARCHAR, except where limited by database support.

* Calling CallableStatement.registerOutputParameter(parameterIndex, sqlType)
  with sqlType Types.NUMERIC or Types.DECIMAL sets the scale of the output
  parameter to zero (0). According to the JDBC specification, calling 
  CallableStatement.registerOutputParameter(parameterIndex, sqlType, scale) is
  the recommended method for registering NUMERIC or DECIMAL output parameters. 

* When attempting to create an updatable, scroll-sensitive result set for a
  query that contains an expression as one of the columns, the driver cannot
  satisfy the scroll-sensitive request. The driver downgrades the type of the
  result returned to scroll-insensitive.

* The driver supports retrieval of output parameters from a stored procedure
  before all result sets and/or update counts have been completely processed.
  When CallableStatement.getXXX is called, result sets and update counts that
  have not yet been processed by the application are discarded to make the
  output parameter data available. Warnings are generated when results are

* The preferred method for executing a stored procedure that generates result
  sets and update counts is using CallableStatement.execute(). If multiple
  results are generated using executeUpdate, the first update count is returned.
  Any result sets prior to the first update count are discarded. If multiple
  results are generated using executeQuery, the first result set is returned.
  Any update counts prior to the first result set are discarded. Warnings are
  generated when result sets or update counts are discarded. 

* The ResultSet methods getTimestamp(), getDate(), and getTime() return
  references to mutable objects. If the object reference returned from any of
  these methods is modified, re-fetching the column using the same method
  returns the modified value. The value is only modified in memory; the database
  value is not modified.


The USER'S GUIDE is available as an HTML help system and as a PDF.

* The HTML help system is installed in the SQLServerHelp subdirectory of your
  product installation directory.

* The HTML help system and the PDF are available on the Progress DataDirect Web

     Installed Files

When you extract the contents of the installation download package to your
installer directory, you will notice the following files that are required to
install the driver:

*  Windows:

*  Non-Windows:

When you install the driver, the installer creates the following directories and
files in the product installation directory in the default installation
directory or in an installation directory you specify, represented by

LicenseTool.jar            Product license file manager

ddprocinfo.exe             Windows executable to start the Processor Information

ddprocinfo                 UNIX/Linux script to start the Processor Information

Load From File/
                           Java source example for bulk loading from a CSV file

Load From File/load.txt    Sample data for the example

                           Java source example for bulk loading from a result

Threaded Streaming/
                           Java source example for multi-threaded bulk loading
                           from a result set

Threaded Streaming/README.txt
                           Instructions on how to use the file

Threaded Streaming/
                           Properties file for the example

                           Example Java(TM) source file     Example Java source file

SQLServerHelp/index.html   Driver HTML help system entry file

SQLServerHelp/*            Support files and folders for the driver help system

.psc_dd_inst_reg.xml       Support file for the installation logs

logs/*.*                   Log file generated upon installing or uninstalling

*.*                        Files associated with the driver. Installed only when
                           installing on Windows with the Windows executable

sqlserver.jar              SQL Server Driver and DataSource classes

JDBCDriverLogin.conf       The JAAS login configuration file installed with the

JDBC for SQL Server v6.0 notices.txt
                           Third party agreement information

INSTALL_DIR/pool manager/:
pool.jar                   All DataDirect Connection Pool Manager classes

JDBC for SQL Server v6.0 readme.txt
                           This file
instjdbc.sql               File for installing JTA stored procedures

sqljdbc.dll                File for use with JTA stored procedures
                           (32-bit version)

instjdbc.sql               File for installing JTA stored procedures

sqljdbc.dll                File for use with JTA stored procedures 
                           (Itanium 64-bit version)

INSTALL_DIR/SQLServer JTA/x64-bit:
instjdbc.sql               File for installing JTA stored procedures

sqljdbc.dll                File for use with JTA stored Procedures 
                           (AMD64 and Intel EM64T 64-bit version)

Config.txt                 Configuration file for DataDirect Test       Logging properties file

testforjdbc.bat            Batch file to start DataDirect Test             Shell script to start DataDirect Test

lib/testforjdbc.jar        DataDirect Test classes

.com.zerog.registry.xml    Support file for the uninstaller

.psc_dd_uninst_reg.xml     Support file for the uninstaller

InstallScript.iap_xml      Support file for the uninstaller
                           Support file for the Windows uninstaller

Uninstall_JDBC_60.exe      Windows uninstaller

Uninstall_JDBC_60.lax      Support file for the Windows uninstaller

uninstaller.jar            Java uninstaller

resource/*.*               Resource files for the Windows uninstaller

sqlserver/*.*              Driver specific support files for the uninstaller

December 10, 2019