README
     Progress(R) DataDirect(R)
     Progress(R) DataDirect(R) for JDBC(TM) for SQL Server(TM) Driver
     Release 6.0.0 
     August 21, 2019


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


CONTENTS

Requirements
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
Documentation
Installed Files


     Requirements

Java SE 6 or higher must be installed and the JVM must be defined on your system
path.


     Installation Directory

The default installation directory for the driver is:

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

* UNIX/Linux:
  /opt/Progress/DataDirect/JDBC_60
  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

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

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

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

 Enhancements 
------------
* 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 5.1.4.000120 of the driver. For 
  more information on the vulnerabilities resolved by this upgrade, refer 
  to https://nvd.nist.gov/.  
  

    Release 6.0.0 Features

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

* Release Notes
  https://www.progress.com/jdbc/release-history/microsoft-sql-server-jdbc

* Supported Configurations
  https://www.progress.com/supported-configurations/datadirect?ds=microsoft-sql-server

* DataDirect support matrices
  https://www.progress.com/matrices/datadirect

Enhancements 
------------ 
* 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
  object.

* For Kerberos authentication environments, the following changes have been
  implemented.
     - The driver no longer sets the java.security.auth.login.config 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 java.security.auth.login.config
       system property. 
     - The driver no longer sets the java.security.krb5.conf 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
  calls.

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

Changed Behavior
----------------
* 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
logging:

http://msdn.microsoft.com/en-us/library/ms190422.aspx
http://msdn.microsoft.com/en-us/library/ms190203.aspx

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 testforjdbc.sh file, change to the directory containing 
testforjdbc.sh and enter: 

chmod +x testforjdbc.sh

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
  discarded.

* 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.


     Documentation	 	 

PROGRESS DATADIRECT FOR JDBC FOR SQL SERVER DRIVER USER'S GUIDE
---------------------------------------------------------------
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
  site:
  https://www.progress.com/resources/documentation/datadirect-documentation


     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:
   - PROGRESS_DATADIRECT_JDBC_INSTALL.exe
   - PROGRESS_DATADIRECT_JDBC_SQLSERVER_6.0.0_INSTALL.iam.zip
   - PROGRESS_DATADIRECT_JDBC_COMMON_6.0.0_INSTALL.iam.zip
   - PROGRESS_DATADIRECT_JDBC_DOCUMENTATION_6.0.0_INSTALL.iam.zip

*  Non-Windows:
   - PROGRESS_DATADIRECT_JDBC_INSTALL.jar
   - PROGRESS_DATADIRECT_JDBC_SQLSERVER_6.0.0_INSTALL.iam.zip
   - PROGRESS_DATADIRECT_JDBC_COMMON_6.0.0_INSTALL.iam.zip
   - PROGRESS_DATADIRECT_JDBC_DOCUMENTATION_6.0.0_INSTALL.iam.zip

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
INSTALL_DIR.


INSTALL_DIR/:
-------------
LicenseTool.jar            Product license file manager

ddprocinfo.exe             Windows executable to start the Processor Information
                           Utility

ddprocinfo                 UNIX/Linux script to start the Processor Information
                           Utility


INSTALL_DIR/Examples/Bulk/:
---------------------------
Load From File/bulkLoadFileDemo.java
                           Java source example for bulk loading from a CSV file

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

Streaming/bulkLoadStreamingDemo.java
                           Java source example for bulk loading from a result
                           set

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

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

Threaded Streaming/thread.properties
                           Properties file for the example


INSTALL_DIR/Examples/JNDI/:
---------------------------
JNDI_FILESYSTEM_Example.java
                           Example Java(TM) source file

JNDI_LDAP_Example.java     Example Java source file


INSTALL_DIR/Help/: 
------------------
SQLServerHelp/index.html   Driver HTML help system entry file

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


INSTALL_DIR/install/: 
---------------------
.psc_dd_inst_reg.xml       Support file for the installation logs

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


INSTALL_DIR/jre/:
-----------------
*.*                        Files associated with the driver. Installed only when
                           installing on Windows with the Windows executable
                           file.


INSTALL_DIR/lib/:
-----------------
sqlserver.jar              SQL Server Driver and DataSource classes

JDBCDriverLogin.conf       The JAAS login configuration file installed with the
                           driver


INSTALL_DIR/NOTICES/:
---------------------
JDBC for SQL Server v6.0 notices.txt
                           Third party agreement information


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


INSTALL_DIR/READMES/:
---------------------
JDBC for SQL Server v6.0 readme.txt
                           This file
						   
						   
INSTALL_DIR/SQLServer JTA/32-bit:
---------------------------------
instjdbc.sql               File for installing JTA stored procedures

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


INSTALL_DIR/SQLServer JTA/64-bit:
---------------------------------
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)


INSTALL_DIR/testforjdbc/:
-------------------------
Config.txt                 Configuration file for DataDirect Test

ddlogging.properties       Logging properties file

testforjdbc.bat            Batch file to start DataDirect Test

testforjdbc.sh             Shell script to start DataDirect Test

lib/testforjdbc.jar        DataDirect Test classes


INSTALL_DIR/uninstall/:
-----------------------
.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

installvariables.properties
                           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



August 21, 2019
===============
End of README