README Progress(R) DataDirect(R) Progress(R) DataDirect(R) for JDBC(TM) for SQL Server(TM) Driver Release 6.0.0 December 3, 2019 *********************************************************************** Copyright (C) 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 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: /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 ---------------- * 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 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 December 3, 2019 =============== End of README