Once we've verified basic functionality of #14540, then migrate our Azure connection over to the Microsoft JDBC driver. The user will not have an option -- we'll only support Microsoft JDBC. Due to lack of sql_variant support, we will still offer both jTDS & MS JDBC
Migration impact: We should test loading a v17 azure connection in v18 & see if it works or what errors we see.
In ConnectionProperties.java, take a look at line #2520 & you'll see that we check for AUTO_KEEPALIVE=OFF. Do not invoke the AUTO_KEEPALIVE functionality in v18 for Azure. In order to use AUTO_KEEPALIVE, we need the JDBC driver to return us the raw socket. Lets do our first implementation w/o getting the raw socket & see if we run into timeout issues. If we do, then we can determine next steps. MS article on timeouts associated w/ Azure.
Connection to azure: https://msdn.microsoft.com/en-us/library/bb879949(v=sql.110).aspx
|
119 KB
|
88 KB
svn #50741 - Converted to the Microsoft JDBC driver - first pass.
Hi Sachin, I tried the connection and seems like it doesn't time out. I only tried it for about 10 minutes. Additionally, we do also have a variant issue for this database connection. Probably most of the fixes Ivan is doing for MSSQL should also be done for Azure. Thanks, Tom
Update, after ~15 minutes, the QA connection was timed out. Perhaps we can use auto-reconnect since the new JDBC has the isValid method??
Hi Sachin, I tried the connection and seems like it doesn't time out. I only tried it for about 10 minutes. Additionally, we do also have a variant issue for this database connection. Probably most of the fixes Ivan is doing for MSSQL should also be done for Azure. Thanks, Tom
Update, after ~15 minutes, the QA connection was timed out. Perhaps we can use auto-reconnect since the new JDBC has the isValid method??
Note: If you already have a connection to Azure in ADS, remove any old parameters from the Server Connection->Driver->Parameters field like connection timeout as the new Microsoft JDBC will not work with those and error.
Note: If you already have a connection to Azure in ADS, remove any old parameters from the Server Connection->Driver->Parameters field like connection timeout as the new Microsoft JDBC will not work with those and error.
Pls post whether Azure supports sql_variant data type. Post the SQL that you used to validate this along w/ the results.
Pls post whether Azure supports sql_variant data type. Post the SQL that you used to validate this along w/ the results.
Hi Sachin, It doesn't appear from the documentation that Azure handles sql_variant. https://msdn.microsoft.com/en-us/library/ms173829.aspx. That said, I ran some tests using ADS v17 with jtds and ADS v18 with the Microsoft driver. The following workload from Ivan worked fine in v17. In v18, all except the select worked fine. Also, the schema tree in v18 displayed the columns correctly. See screen shot.
CREATE TABLE [dbo].[a] ([a] int NOT NULL, [b] sql_variant NULL, [c] varchar(25) NULL, [d] date NULL, CONSTRAINT [pkey] PRIMARY KEY CLUSTERED([a])) GO insert into [dbo].[a] values (0, 1, 'test', getdate()) GO insert into [dbo].[a] values (1, 'b', 'test', getdate()) GO insert into [dbo].[a] values (2, getdate(), 'test', getdate()) GO insert into [dbo].[a] values (3, 0x0101, 'test', getdate()) GO select * from [dbo].[a]
select a, c, d from [dbo].[a] works while select b from [dbo].[a] fails for com.microsoft.sqlserver.jdbc.SQLServerException: The "variant" data type is not supported. The failure happens in the SQLServerStatment,execute() method.
I will add the driver selection panel as we did in MS SQL Server.
Hi Sachin, It doesn't appear from the documentation that Azure handles sql_variant. https://msdn.microsoft.com/en-us/library/ms173829.aspx. That said, I ran some tests using ADS v17 with jtds and ADS v18 with the Microsoft driver. The following workload from Ivan worked fine in v17. In v18, all except the select worked fine. Also, the schema tree in v18 displayed the columns correctly. See screen shot.
CREATE TABLE [dbo].[a] ([a] int NOT NULL, [b] sql_variant NULL, [c] varchar(25) NULL, [d] date NULL, CONSTRAINT [pkey] PRIMARY KEY CLUSTERED([a])) GO insert into [dbo].[a] values (0, 1, 'test', getdate()) GO insert into [dbo].[a] values (1, 'b', 'test', getdate()) GO insert into [dbo].[a] values (2, getdate(), 'test', getdate()) GO insert into [dbo].[a] values (3, 0x0101, 'test', getdate()) GO select * from [dbo].[a]
select a, c, d from [dbo].[a] works while select b from [dbo].[a] fails for com.microsoft.sqlserver.jdbc.SQLServerException: The "variant" data type is not supported. The failure happens in the SQLServerStatment,execute() method.
I will add the driver selection panel as we did in MS SQL Server.
svn #50761 - First pass.
svn #50766 - Fixed some parameters.
svn #50761 - First pass.
svn #50766 - Fixed some parameters.
Hi QA Team, Please do overall testing of ADS against an Azure database using the Microsoft driver. This includes but not limited to QB, ERM, VA, Tools, DBA tools, QA and Explain, Table Data Editor, Creates, Alters and Scripting. Also, regression test the Jtds driver with the same paradigm.
Additionally, please do some performance testing and show results comparing the Jtds driver to the Microsoft driver for batch import.
Do not worry about testing with SSO. This will be done in a subsequent issue. Just test using the SQL Server Authentication. See Server Properties.
Please also test and report how long a connection in QA takes to time out?
Thanks in advance, Tom
Hi QA Team, Please do overall testing of ADS against an Azure database using the Microsoft driver. This includes but not limited to QB, ERM, VA, Tools, DBA tools, QA and Explain, Table Data Editor, Creates, Alters and Scripting. Also, regression test the Jtds driver with the same paradigm.
Additionally, please do some performance testing and show results comparing the Jtds driver to the Microsoft driver for batch import.
Do not worry about testing with SSO. This will be done in a subsequent issue. Just test using the SQL Server Authentication. See Server Properties.
Please also test and report how long a connection in QA takes to time out?
Thanks in advance, Tom
@tom: for the jTDS driver, I see that you had initially removed the AUTO_KEEPALIVE related logic described in this issue's main description w/ check-in svn #50741. You must have done this as the original plan was to no longer offer the jTDS driver. However, since we have now decided to support both jTDS & MS JDBC in v18, I don't see that you have re-introduced the AUTO_KEEPALIVE code for the jTDS driver.
@tom: for the jTDS driver, I see that you had initially removed the AUTO_KEEPALIVE related logic described in this issue's main description w/ check-in svn #50741. You must have done this as the original plan was to no longer offer the jTDS driver. However, since we have now decided to support both jTDS & MS JDBC in v18, I don't see that you have re-introduced the AUTO_KEEPALIVE code for the jTDS driver.
In beta-19, the following items have been fixed.
- SVN 52141: Azure should use the connection property "property.mssql.driver.interface" to store the driver interface.
- SVN 52142: The connection property "connection.sid" was missing. This resulted in loss of the database name when deploying the connection to ADServer. The property is now saved.
Any existing Azure connections created in v18 between devi-199 and beta-19 should be deleted and created again using beta-19.
In beta-19, the following items have been fixed.
- SVN 52141: Azure should use the connection property "property.mssql.driver.interface" to store the driver interface.
- SVN 52142: The connection property "connection.sid" was missing. This resulted in loss of the database name when deploying the connection to ADServer. The property is now saved.
Any existing Azure connections created in v18 between devi-199 and beta-19 should be deleted and created again using beta-19.
Verified in ADS 18-rc-5.By default AUTO_KEEPALIVE=OFF for jTDS JDBC Driver.AUTO_KEEPALIVE is not supported for MS JDBC driver.
Please see the sheet.
Verified in ADS 18-rc-5.By default AUTO_KEEPALIVE=OFF for jTDS JDBC Driver.AUTO_KEEPALIVE is not supported for MS JDBC driver.
Please see the sheet.
Issue #14541 |
Closed |
Fixed |
Resolved |
Completion |
No due date |
Fixed Build ADS 18.0.0-beta-19 |
No time estimate |
2 issue links |
relates to #14852
Issue #14852SQL Server and Azure is not getting connected using Windows Single Sign-On Authentication with MS JDBC driver |
depends upon #14540
Issue #14540Add support for MS JDBC Driver |
svn #50741 - Converted to the Microsoft JDBC driver - first pass.