SAP HANAデータベースコネクタ

カテゴリ: データベースコネクタ

はじめに

本書は、mindzieDataDesignerコネクタをSAP HANAデータベースに接続するための設定手順を支援するために作成されました。mindzieDataDesignerは、mindzieStudioで使用されるETLツールであり、データベースのテーブルをプロセスマイニングのイベントログに変換します。本書の目的は、接続文字列の作成や必要に応じてファイアウォールのポート開放を支援することです。

概要

SAP HANAコネクタは、ODBCを使用してSAP HANAデータベースへの堅牢な接続を提供します。このコネクタは企業向けのSAP環境に最適化されており、オンプレミスのSAP HANAインスタンスをサポートしているため、大規模企業データのプロセスマイニングに最適です。

システム要件

  • データベースシステム: SAP HANA 1.0以降(2.0推奨)
  • 導入形態: オンプレミス
  • ODBCドライバ: SAP HANA ODBCドライバ(最低バージョン2.4)

事前準備

SAP HANA ODBCドライバをシステムにインストールしてください。インストール方法はSAPのドキュメントを参照してください。

接続文字列の形式

基本的なODBC接続

Driver={HDBODBC};ServerNode=hostname:port;Database=database_name;UID=username;PWD=password;

接続パラメータ

パラメータ 説明 必須
Driver ODBCドライバ名 はい {HDBODBC} または {SAP HANA ODBC Driver}
ServerNode HANAサーバーとポート はい hana-server.company.com:30015
Database 対象データベース/テナント いいえ PRD または SystemDB
UID ユーザー名 はい MINDZIE_USER
PWD パスワード はい SecurePassword123
CHAR_AS_UTF8 UTF-8文字ハンドリング いいえ 1
CONNECTTIMEOUT 接続タイムアウト いいえ 30
COMMUNICATIONTIMEOUT 通信タイムアウト いいえ 0(無制限)
RECONNECT 自動再接続設定 いいえ 1(有効)
ENCRYPT 暗号化の有効化 いいえ true

接続例

標準的なオンプレミス接続

Driver={HDBODBC};ServerNode=hana-prod.company.com:30015;Database=PRD;UID=PROCESS_MINING_USER;PWD=SecurePassword123;CHAR_AS_UTF8=1;

マルチテナントデータベースコンテナ(MDC)

Driver={HDBODBC};ServerNode=hana-server:30013;Database=TENANT_DB;UID=MINDZIE_USER;PWD=password;

高可用性接続

Driver={HDBODBC};ServerNode=hana-node1:30015,hana-node2:30015,hana-node3:30015;Database=PRD;UID=MINDZIE_USER;PWD=password;RECONNECT=1;

必要なSAP HANA権限

プロセスマイニングに必要な典型的な権限は以下のSQL例の通りです。サンプルのスキーマ名、テーブル名、ユーザー名は実際の値に置き換えてください。

-- スキーマアクセス権付与("PROCESS_MINING" はご自身のスキーマ名に置き換え)
GRANT SELECT ON SCHEMA "YOUR_SCHEMA_NAME" TO YOUR_USERNAME;

-- テーブルレベルの権限付与(実際のテーブル名に置き換え)
GRANT SELECT ON "YOUR_SCHEMA_NAME"."YOUR_TABLE_NAME" TO YOUR_USERNAME;

-- システムビュー(メタデータアクセス用に必要な場合)
GRANT SELECT ON SYS.M_DATABASES TO YOUR_USERNAME;

サンプル名を用いた例:

-- サンプル権限付与例
GRANT SELECT ON SCHEMA "PROCESS_MINING" TO MINDZIE_USER;
GRANT SELECT ON "PROCESS_MINING"."EVENT_LOG" TO MINDZIE_USER;
GRANT SELECT ON SYS.M_DATABASES TO MINDZIE_USER;

ODBC接続のテスト

ODBC接続を設定後、以下のツールで接続テストが可能です。

Windows ODBCデータソースアドミニストレーター

  • Windows内蔵ユーティリティ(odbcad32.exe
  • ODBC接続の設定とテストが可能
  • コントロールパネル → 管理ツール → ODBCデータソースからアクセス

データベースクライアントツール

  • DBeaver: 無料のクロスプラットフォームDBツールでODBC対応
  • HeidiSQL: Windows用SQLクライアントでODBC接続対応
  • SQL Server Management Studio: ODBC経由でSAP HANA接続可能
  • Toad for SAP: 商用ツールでネイティブSAP HANAサポートあり

Microsoft Officeアプリケーション

  • Excel: データ → データの取得 → その他のソース → ODBCから接続
  • Power BI: ネイティブSAP HANAコネクタおよびODBC対応
  • Access: ODBC経由でテーブルのリンクが可能

コマンドラインツール

  • isql: Unix/LinuxでのODBC接続テスト用コマンドラインツール
  • osql/sqlcmd: Windowsコマンドラインユーティリティ(SAP HANA対応は限定的)

簡単なテストクエリ

接続後、以下の基本クエリで動作確認してください。

SELECT CURRENT_TIMESTAMP FROM SYS.DUMMY;

ファイアウォールの設定

必須のファイアウォールポート

SAP HANA ODBC接続に必要なポートは以下の通りです。

ポート 用途 デフォルトインスタンス(00)
30013 SystemDB SQL接続 システムデータベースアクセス
30015 テナントデータベースSQL接続 最初のテナントデータベース
443 SAP HANA Cloud(HTTPS/SSL) クラウド接続のみ

ポート番号体系

  • システムデータベース: ポート30013(デフォルトインスタンス00用)
  • テナントデータベース: ポート30015(デフォルトインスタンス00用)
  • パターン: 3NN13 (SystemDB) または 3NN15 (Tenant DB)、NNはインスタンス番号

注意: ポート番号はSAP HANAのインストール時にカスタマイズ可能です。環境の正確なポートについてはSAP HANA管理者に確認してください。

追加の考慮事項

  • 高可用性: クラスター構成では複数ポートが必要になる場合があります
  • ロードバランサー: ロードバランサー構成では追加ポートが必要な場合があります

参考: SAPノート2477204 - FAQ: SAP HANAサービスとポート(SAPサポートアクセスが必要)

mindzieサーバーアクセス

セキュリティ強化のため、mindzieサーバーの特定IPアドレスのみをファイアウォールで許可設定可能です。利用中のmindzieサーバーの現在のIPアドレスについてはmindzieサポートまでお問い合わせください。

CDPOS変更ドキュメント抽出

CDPOSはビジネスオブジェクトのフィールドレベルの変更を格納する重要なSAPテーブルで、プロセスマイニングで詳細な変更履歴を追うために使用されます。CDPOS自体には日付フィールドがないため、CDHDR(変更ドキュメントヘッダー)と結合して時間ベースのフィルタリングを行います。

Oracleデータベース用クエリ

-- ORACLE SQL版: 過去2年分の全CDPOSレコード取得
-- CDPOSには日時フィールドがないため、CDHDRと結合してフィルタリング

-- 参考ドキュメント:
-- 1. CDHDR.UDATE = "変更ドキュメントの作成日" (SAPデータシート)
-- 2. CDPOS.CHANGENR = CDHDR.CHANGENR が標準結合 (SAPコミュニティ)
-- 3. "これら2つのテーブルは変更番号で接続されている" (Techlorean)
-- 4. CDHDRはヘッダー情報、CDPOSはフィールド詳細情報を保持

SELECT CDPOS.*
FROM CDPOS
INNER JOIN CDHDR ON CDPOS.CHANGENR = CDHDR.CHANGENR
WHERE CDHDR.UDATE >= ADD_MONTHS(SYSDATE, -24)  -- Oracle: 過去24か月(2年)

-- ORACLE固有メモ:
-- 1. 2年計算にADD_MONTHS(SYSDATE, -24)使用
-- 2. SYSDATEは現在日時取得
-- 3. 代替: CDHDR.UDATE >= SYSDATE - INTERVAL '2' YEAR
-- 4. CDHDR.UDATEの日付形式はOracle DATE型と互換性があることが望ましい

SAP ODBC用クエリ

-- SAP SQL(ODBC経由): 過去2年分の全CDPOSレコード取得
-- CDPOSには日時フィールドがないため、CDHDRと結合してフィルタリング

-- 参考ドキュメント:
-- 1. CDHDR.UDATE = "変更ドキュメントの作成日" (SAPデータシート)
-- 2. CDPOS.CHANGENR = CDHDR.CHANGENR が標準結合 (SAPコミュニティ)
-- 3. "これら2つのテーブルは変更番号で接続されている" (Techlorean)
-- 4. CDHDRはヘッダー情報、CDPOSはフィールド詳細情報を保持

-- 重要: CDPOSはクラスターテーブルであるため、ODBC経由の直接結合は動作しない場合あり
-- SAPのバージョンによりクエリを分割する必要があるかもしれません

SELECT CDPOS.*
FROM CDPOS
INNER JOIN CDHDR ON CDPOS.CHANGENR = CDHDR.CHANGENR
WHERE CDHDR.UDATE >= ADD_DAYS(CURRENT_DATE, -730)  -- SAP HANA: 過去730日(2年)

-- SAP SQL固有メモ:
-- 1. 2年計算にADD_DAYS(CURRENT_DATE, -730)使用(SAP HANA)
-- 2. 古いSAPシステムでは CDHDR.UDATE >= '20220101'(固定日付)を使用する場合あり
-- 3. CDPOSがクラスターテーブルのためODBCでの特別な処理が必要な場合あり
-- 4. 非HANA環境では日付減算のサポート状況により代替必要
-- 5. CDHDR.UDATEは通常SAPのYYYYMMDD形式
-- 6. 互換性重視ならクライアント側での日付パラメータ使用推奨:
--    WHERE CDHDR.UDATE >= '?' -- 2年前の日付パラメータ

-- クラスターテーブル警告:
-- CDPOSはSAPのクラスターテーブルでODBC接続に問題が生じる可能性大
-- SAP RFCやファンクションモジュールの使用を検討してください
-- 代替案としてCDHDRを先に取得し、そのCHANGENRを用いてCDPOSを個別取得

SQL Server (T-SQL)用クエリ

-- T-SQL(SQL SERVER)版: 過去2年分の全CDPOSレコード取得
-- CDPOSには日時フィールドがないため、CDHDRと結合してフィルタリング

-- 参考ドキュメント:
-- 1. CDHDR.UDATE = "変更ドキュメントの作成日" (SAPデータシート)
-- 2. CDPOS.CHANGENR = CDHDR.CHANGENR が標準結合 (SAPコミュニティ)
-- 3. "これら2つのテーブルは変更番号で接続されている" (Techlorean)
-- 4. CDHDRはヘッダー情報、CDPOSはフィールド詳細情報を保持

SELECT CDPOS.*
FROM CDPOS
INNER JOIN CDHDR ON CDPOS.CHANGENR = CDHDR.CHANGENR
WHERE CDHDR.UDATE >= DATEADD(YEAR, -2, GETDATE())  -- T-SQL: 現在日付から過去2年

-- T-SQL固有メモ:
-- 1. 2年計算にDATEADD(YEAR, -2, GETDATE())使用
-- 2. GETDATE()は現在日時取得
-- 3. 代替: CDHDR.UDATE >= DATEADD(MONTH, -24, GETDATE())
-- 4. CDHDR.UDATEの日付形式はSQL Serverのdatetimeと互換性が必要
-- 5. UDATEがYYYYMMDD文字列保存の場合はCONVERT()使用可能:
--    WHERE CONVERT(datetime, CDHDR.UDATE, 112) >= DATEADD(YEAR, -2, GETDATE())

ODBCドライバのインストール(mindzieStudioサーバー専用)

注意: このセクションはmindzieStudioを実行するサーバーでのみ必要です。

ダウンロード

アクセス先: https://tools.hana.ondemand.com/#hanatools

  1. 必要に応じて無料SAPアカウントを作成(簡単登録)
  2. 検索: SAP HANA Client
  3. ダウンロード: Windows on x64 64bit
  4. ファイル名例: hanaclient-x.x.x.x-windows-x64.zip

インストール

  1. ZIPファイルを解凍
  2. hdbsetup.exeを管理者権限で実行
  3. 「新しいSAP HANAクライアントをインストール」を選択
  4. ウィザードに従い(デフォルト設定を承諾)
  5. 完了!

インストール確認

PowerShellで以下を実行:

Get-OdbcDriver | Where-Object {$_.Name -like "*HDB*"}

HDBODBC [64-bit] と表示されれば成功

インストール後にドライバが表示されない場合

cd "C:\Program Files\SAP\hdbclient"
hdbodbc_cons.exe -i

トラブルシューティング

一般的な接続問題

「サーバーに接続できません」エラー

  • サーバーのホスト名とポート番号を確認
  • ネットワーク接続およびファイアウォールルールを確認
  • SAP HANAインスタンスが起動して接続受付中か確認
  • HDB infoでサービス状態を確認

「認証に失敗しました」エラー

  • ユーザー名とパスワードが正しいか確認
  • アカウントがロックまたは期限切れでないか確認
  • ユーザーにCONNECT権限があるか確認
  • パスワードポリシーに則っているか確認

「ドライバが見つかりません」エラー

  • SAP HANAクライアントからODBCドライバをインストール済みか確認
  • ODBCデータソースアドミニストレーターでドライバ登録を確認
  • 32ビット/64ビットドライバの互換性設定を確認
  • システムPATHにドライバパスが含まれているか確認

「テーブルまたはビューが存在しません」エラー

  • テーブル名/ビュー名とスキーマ参照を確認
  • 該当オブジェクトにユーザーがアクセス権を持っているか確認
  • フル修飾名(SCHEMA.TABLE)を使用する
  • 大文字小文字の区別規則を確認

関連情報


参考文献および資料

本ドキュメントは以下の資料に基づいています。

公式SAPドキュメント

コミュニティおよび技術資料