Connecting the SQL Gateway via ODBC
InterSystems IRIS maintains a list of SQL Gateway connection definitions, which are logical names for connections to external data sources. Each connection definition consists of a logical name (for use within InterSystems IRIS), information on connecting to the data source, and a username and password to use when establishing the connection. These connections are stored in the table %Library.sys_SQLConnection. You can export data from this table and import it into another instance of the same version of InterSystems IRIS.
Defining a Logical Connection in the Management Portal
To define a connection for an ODBC-compliant data source, perform the following steps:
-
Define an ODBC data source name (DSN) for the external database (the procedure is probably described in the documentation for that database). .
-
In the Management Portal, go to the System Administration > Configuration > Connectivity > SQL Gateway Connections page.
-
Click Create New Connection.
-
On the Gateway Connection page, enter or choose values for the following fields:
-
For Type of connection, choose ODBC.
-
Connection Name — Specify an identifier for the connection, for use within InterSystems IRIS.
-
Select an existing DSN — Choose the DSN that you previously created. You must use a DSN, since the ODBC SQL Gateway does not support connections without a DSN.
-
User — Specify the name for the account to serve as the default for establishing connections, if needed.
-
Password — Specify the password associated with the default account.
For example, a typical connection might use the following values:
Setting Value Type ODBC Connection Name ConnectionODBC1 Select an existing DSN MyAccessPlayground User DBOwner Password DBPassword -
-
For the other options, see “Implementation-specific ODBC Connection Options” later in this section.
-
Optionally test if the values are valid. To do so, click the Test Connection button. The screen will display a message indicating whether the values you have entered in the previous step allow for a valid connection.
-
To create the named connection, click Save.
-
Click Close.
For OS-specific instructions on how to create a DSN, see the following sections in Using the InterSystems ODBC Driver:
-
“Defining an ODBC Data Source on Windows”
-
“Defining an ODBC Data Source on UNIX®”
Implementation-specific ODBC Connection Options
Before you define an SQL Gateway connection, you should make sure that you understand the requirements of the external database and of the database driver, because these requirements affect how you define the connection. The following options do not apply to all driver implementations.
The Enable legacy outer join syntax (Sybase) option controls whether the connection will enable you use to use legacy outer joins. Legacy outer joins use SQL syntax that predates the SQL-92 standard. To find out whether the external database supports such joins, consult the documentation for that database.
The Needs long data length option controls how the connection will bind data. The value of this option should agree with the SQL_NEED_LONG_DATA_LEN setting of the database driver. To find the value of this setting, use the ODBC SQLGetInfo function. If SQL_NEED_LONG_DATA_LEN equals Y, then select the Needs long data length option; otherwise clear it.
The Supports Unicode streams option controls whether the connection supports Unicode data in streams, which are fields of type LONGVARCHAR or LONGVARBINARY.
-
Clear this check box for Sybase. If you are using a Sybase database, all fields you access via the SQL Gateway should include only UTF-8 data.
-
Select this check box for other databases.
The Do not use delimited identifiers by default option controls the format of identifiers in the generated routines.
Select this check box if you are using a database that does not support delimited SQL identifiers. This currently includes the following databases:
-
Sybase
-
Informix
Clear the check box if you are using any other database. All SQL identifiers will be delimited.
The Use COALESCE option controls how a query is handled when it includes a parameter (?), and it has an effect only when a query parameter equals null.
-
If you do not select Use COALESCE and if a query parameter equals null, the query returns only records that have null for the corresponding value. For example, consider a query of the following form:
SELECT ID, Name from LinkedTables.Table WHERE Name %STARTSWITH ?If the provided parameter is null, the query would return only rows with null-valued names.
-
If you select Use COALESCE, the query wraps each parameter within a COALESCE function call, which controls how null values are handled.
Then, if a query parameter equals null, the query essentially treats the parameter as a wildcard. In the previous example, if the provided parameter is null, this query returns all rows, which is consistent with the behavior of typical ODBC clients.
Whether you select this option depends on your preferences and on whether the external database supports the COALESCE function.
To find out whether the external database supports the COALESCE function, consult the documentation for that database.
The Conversion in composite Row IDs option controls how non-character values are treated when forming a composite ID. Choose an option that is supported by your database:
-
Do not convert non-character values — This option performs no conversion. This option is suitable only if your database supports concatenating non-character values to character values.
-
Use CAST — This option uses CAST to convert non-character values to character values.
-
Use {fn convert ...} — This option uses {fn convert ...} to convert non-character values to character values.
In all cases, the IDs are concatenated with || between the IDs (or transformed IDs).
Consult the documentation for the external database to find out which option or options it supports.
Using the SQL Gateway as an ODBC Data Source
InterSystems IRIS provides ODBC drivers and thus can be used as an ODBC data source. That is, an InterSystems IRIS instance can connect to itself or to another InterSystems IRIS instance via ODBC and the SQL Gateway. Specifically, the connection is from a namespace in one InterSystems IRIS to a namespace in the other InterSystems IRIS. To connect in this way, you need the same information that you need for any other external database: the connection details for the database driver that you want to use. This section provides the basic information.
To configure an InterSystems IRIS instance (InterSystems IRIS_A) to use another InterSystems IRIS instance (InterSystems IRIS_B) as an ODBC data source, do the following:
-
On the machine that is running InterSystems IRIS_A, create a DSN that represents the namespace in InterSystems IRIS_B that you want to use.
Tip:If InterSystems IRIS_B is installed on this machine, a suitable DSN might already be available, because when you install InterSystems IRIS, the installer automatically creates DSNs.
-
Within InterSystems IRIS_A, use the SQL Gateway to create an ODBC connection that uses that DSN. Provide the following details:
-
For Type, choose ODBC.
-
Connection Name — Specify an identifier for the connection, for use within InterSystems IRIS_A.
-
Select an existing DSN — Choose the DSN that you previously created for InterSystems IRIS_B.
For example, a typical connection might use the following values:
Setting Value Type ODBC Connection Name TestConnection Select an existing DSN TestConnection Tip:You do not need to specify User and Password because that information is part of the DSN itself.
-
-
Click Save.
-
Click Close.