ADO.NET Data Provider
Exasol provides an ADO.NET Data Provider to connect .NET application to Exasol.
The data provider is tested with the following applications:
-
SQL Server Integration Services: SQL Server Integration Services are supported for Visual Studio 2015 and later versions. The SQL Server Integration Services work with the generic ADO.NET and ODBC drivers and don't need any extensions to be installed.
-
SQL Server Reporting Services (Data Processing Extension) and SQL Server Analysis Services (DDEX provider and pluggable SQL cartridge) are installed for:
-
Visual Studio 2015 (v 14.0) with SQL Server 2016 (v 13.0)
-
Visual Studio 2017 (v 15.0) with SQL Server 2017 (v 14.0)
-
Visual Studio 2019 (v 16.0) with SQL Server 2019 (v 15.0)
DDEX providers for SQL Server Analysis Services in Visual Studio 2017 and 2019 (v 14.0 and 15.0) are installed in EXAExtension.vsix
by the Exasol ADO.NET setup. You must close all Visual Studio instances before this extension is installed.
System Requirements
- You must have system administrator rights for the system where you are installing the data provider.
- Microsoft .NET Framework 4.6.2 must be installed on your system.
The data driver is tested on the following operating systems:
- Windows 7 (x86/x64)
- Windows 10 (x86/x64)
- Windows Server 2012 R2 (x86/x64)
- Windows Server 2016 (x86/x64)
- Windows Server 2019 (x86/x64)
Download and Install the ADO.NET Data Provider
-
Download the latest driver from the Exasol Download Portal.
- Run the downloaded executable file and follow the setup wizard to complete the installation.
The data provider is installed in the global assembly cache and registered in the global configuration file of the .NET framework.
An additional tool Data Provider Metadata View (DPMV) is also installed. You can use this tool to check the connectivity and run simple metadata queries.
Use the Data Provider
- Select the data provider using either of the following two methods:
- Select the entry Exasol Data Provider from the list of installed data providers.
- Enter the invariant identifier
Exasol.EXADataProvider
to select the data provider.
- Connect to Exasol using a connection string with all the required information. The connection string is a sequence of keyword and value pairs separated by semicolons. For example,
host=192.168.6.11..14/72975B4D331DEEB44FA41FB858A5417E163151BBFB45376574706800A8DCCE30:8563;UID=sys;PWD=exasol;Schema=test
.
Supported keywords in connection strings
The following table describes all keywords that are supported in this version of Exasol. Keywords that are not listed in the table are not supported.
Keyword | Description |
---|---|
authmethod
|
Specifies the authentication method for OpenID connections. If the value for the parameter is If the value for the parameter is For more information, see Authentication using OpenID. |
autocommit
|
Settings for autocommit: ON or OFF. Default: ON |
encryption
|
Settings for the automatic encryption: ON or OFF. Default: ON |
feedbackinterval
|
During a query the server sends feedback to the client at set intervals. This feedback:
Default: 1 (second) A feedback interval set too high may cause a long lag time before a command is canceled. |
fingerprint
|
If TLS validation fails and you trust the server, use this parameter to include the server fingerprint in the connection string. For example:
To bypass TLS certificate checking, use the
A connection string must only contain a single fingerprint, specified either after the host or port or in a |
hosttimeout
|
Specifies the connection timeout for each TCP connection attempt in milliseconds. If multiple hosts are specified in the connection string, each host will wait for the specified time for a successful connection. Default: 2000 |
legacyencryption
|
If it is set to Possible values:
|
logfile
|
Log file for the driver (for example, |
logintimeout
|
The maximum time in milliseconds that the driver will wait to establish a connection. This timeout is required to limit the overall login time, especially in the case of a large cluster with several reserve nodes. Default: 0 (infinite) |
onconnect
|
SQL string which is executed directly after the connection is established. If an error occurs, the connection will be aborted. |
password or pwd |
Password |
port
|
Port of Exasol. This port is used if you did not specify any port within the parameter |
querytimeout
|
Defines how many seconds a statement may run before it is automatically aborted. Default: 0 (infinite) |
schema
|
Schema to be opened on login. |
server or host |
Defines the servers, fingerprint, and the port of the Exasol cluster (for example, If host names are specified there, they can have DNS entries with multiple IP addresses. |
snapshottransactions
|
Changes the snapshottransaction setting in the session. Possible values:
If not set, the default in the session is used. |
sslcertificate
|
Specifies how ADO.NET driver will treat the server certificate for the connection. If the connection has Possible values:
If the SSL certificate is not verified or a client does not have the certificate, the connection fails. To overcome this problem, you could use a fingerprint in the connection string that allows the connection. For fingerprint based verification, the connection string is |
superconnection
|
Enables the user to execute queries even if the limit for active sessions (executing a query) has been reached. Valid values are Default: Only the
|
|
Username |
Example for Exasol Data Provider using C#:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Common;
namespace ConnectionTest
{
class Program
{
static void Main(string[] args)
{
DbProviderFactory factory=null; try
{
factory = DbProviderFactories.GetFactory("Exasol.EXADataProvider");
Console.WriteLine("Found Exasol driver");
DbConnection connection = factory.CreateConnection();
connection.ConnectionString =
"Server=192.168.6.11..14;Port=8563;UID=sys;PWD=exasol;Schema=sys";
connection.Open();
Console.WriteLine("Connected to server");
DbCommand cmd = connection.CreateCommand();
cmd.Connection = connection;
cmd.CommandText = "SELECT * FROM CAT";
DbDataReader reader = cmd.ExecuteReader();
Console.WriteLine("Schema SYS contains:");
while (reader.Read())
{
Console.WriteLine("{0}, {1}",
reader["TABLE_NAME"],
reader["TABLE_TYPE"]);
}
reader.Close();
connection.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
If the example is successfully executed the following output is displayed:
Found Exasol driver Connected to server Schema SYS contains: EXA_SQL_KEYWORDS, TABLE DUAL, TABLE EXA_PARAMETERS, TABLE ...
Schema Collections
Exasol ADO.NET driver supports the following Schema Collections:
- MetaDataCollections
- DataSourceInformation
- DataTypes
- Restrictions
- ReservedWords
- Tables
- Columns
- Procedures
- ProcedureColumns
- Views
- Schemas
Best Practices
Exasol Data Processing Extension
The EXADataProcessingExtension
implements interfaces for Microsoft SQL Server Reporting Services to create reports with Exasol. In the following example Visual Studio 2005 is used to create a report for the Reporting Services:
- Start Visual Studio 2005 and create a new report server project.
- Open the Project sheet explorer.
- Create a new data source and insert the connection string, user, and passwords.
- In the Project sheet explorer, add a new report using the wizard. When selecting the data source, choose the ExaDataSource that was previously configured.
- Publish the report as soon as it is ready. The functions are contained in Create menu.
- To view the report, point your browser to the address of the report server. For example,
http://localhost/Reports