SQL Serverコネクタ

SQL Serverコネクタを使用すると、外部SQL Serverデータベースでテーブルのクエリと作成を行うことができます。これは、SQL ServerとHiveのような異なるシステム間、または2つの異なるSQL Serverインスタンス間でデータを結合するために使用できます。

設定

SQL Serverコネクタを設定するには、`etc/catalog`に`sqlserver.properties`などの名前のカタログプロパティファイルを作成し、SQL Serverコネクタを`sqlserver`カタログとしてマウントします。設定に合わせて接続プロパティを置き換え、以下の内容でファイルを作成します。

connector.name=sqlserver
connection-url=jdbc:sqlserver://[serverName[\instanceName][:portNumber]]
connection-user=root
connection-password=secret

接続セキュリティ

JDBCドライバとコネクタは、トランスポート層セキュリティ(TLS)暗号化と証明書の検証を自動的に使用します。これには、SQL Serverデータベースホストに適切なTLS証明書が設定されている必要があります。

接続文字列で暗号化を無効にするには、`encrypt`プロパティを使用します。

connection-url=jdbc:sqlserver://<host>:<port>;databaseName=<databaseName>;encrypt=false;

`connection-url`を使用して設定できるその他のSSL設定プロパティは次のとおりです。

SSL設定プロパティ

プロパティ名

説明

デフォルト

trustServerCertificate

サーバー証明書が自動的に信頼されず、SSL証明書の検証にトラストストアが必要であることを示します。

false

trustStoreType

トラストストアファイルのファイル形式。たとえば、`JKS`または`PEM`です。

hostNameInCertificate

サーバーからのSSL証明書で想定されるCN(共通名)を指定します。

trustStore

トラストストアファイルへのパス。

trustStorePassword

トラストストアのパスワード。

トラストストアを使用する接続文字列は、次の例のようになります。

connection-url=jdbc:sqlserver://<host>:<port>;databaseName=<databaseName>;encrypt=true;trustServerCertificate=false;trustStoreType=PEM;hostNameInCertificate=hostname;trustStore=path/to/truststore.pem;trustStorePassword=password

複数のSQL Serverデータベースまたはサーバー

SQL Serverコネクタは、SQL Serverサーバー内の単一のデータベースにのみアクセスできます。そのため、複数のSQL Serverデータベースがある場合、またはSQL Serverの複数のインスタンスに接続する場合、インスタンスごとに1つずつ、複数のカタログを設定する必要があります。

別のカタログを追加するには、`etc/catalog`に別の名前(`.properties`で終わることを確認)のプロパティファイルを追加するだけです。たとえば、プロパティファイルに`sales.properties`という名前を付けると、Prestoは設定されたコネクタを使用して`sales`という名前のカタログを作成します。

一般的な設定プロパティ

プロパティ名

説明

デフォルト

user-credential-name

値がJDBCドライバのユーザー名である`extraCredentials`プロパティの名前。パラメータリファレンスの`extraCredentials`を参照してください。

password-credential-name

値がJDBCドライバのユーザーパスワードである`extraCredentials`プロパティの名前。パラメータリファレンスの`extraCredentials`を参照してください。

case-insensitive-name-matching

データセットとテーブル名を大文字と小文字を区別せずに一致させます。

false

case-insensitive-name-matching.cache-ttl

リモートデータセットとテーブル名をキャッシュする期間。キャッシュを無効にするには、`0ms`に設定します。

1m

SQL Serverへのクエリ

SQL Serverコネクタは、設定されたデータベース内の指定されたユーザーに表示されるすべてのスキーマへのアクセスを提供します。以下の例では、SQL Serverカタログが`sqlserver`であると仮定します。

`SHOW SCHEMAS`を実行することで、使用可能なスキーマを確認できます。

SHOW SCHEMAS FROM sqlserver;

`web`という名前のスキーマがある場合、`SHOW TABLES`を実行することで、このスキーマ内のテーブルを表示できます。

SHOW TABLES FROM sqlserver.web;

以下のいずれかを実行することで、`web`データベースの`clicks`テーブルの列のリストを確認できます。

DESCRIBE sqlserver.web.clicks;
SHOW COLUMNS FROM sqlserver.web.clicks;

最後に、`web`スキーマの`clicks`テーブルをクエリできます。

SELECT * FROM sqlserver.web.clicks;

カタログプロパティファイルに別の名前を使用した場合は、上記の例では`sqlserver`の代わりにそのカタログ名を使用してください。

SQL Serverコネクタの制限事項

Prestoは、SQL Server 2016、SQL Server 2014、SQL Server 2012、およびAzure SQL Databaseへの接続をサポートしています。

Prestoは、次のSQL Serverデータ型をサポートしています。次の表は、SQL ServerとPrestoのデータ型間のマッピングを示しています。

SQL Serverの型

Prestoの型

bigint

bigint

bigint

bigint

smallint

smallint

int

integer

float

float

double

double

double

double

char(n)

varchar(n)