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
- 必要に応じて無料SAPアカウントを作成(簡単登録)
- 検索: SAP HANA Client
- ダウンロード: Windows on x64 64bit版
- ファイル名例:
hanaclient-x.x.x.x-windows-x64.zip
インストール
- ZIPファイルを解凍
hdbsetup.exeを管理者権限で実行- 「新しいSAP HANAクライアントをインストール」を選択
- ウィザードに従い(デフォルト設定を承諾)
- 完了!
インストール確認
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 HANAドキュメント: SAP Help Portal
- SAP HANAクライアント: SAP Software Downloads
- ODBCドライバリファレンス: SAP HANA ODBC Driver Guide
- 接続セキュリティ: SAP HANA Security Guide
- パフォーマンスチューニング: SAP HANA Performance Guide
参考文献および資料
本ドキュメントは以下の資料に基づいています。
公式SAPドキュメント
- SAP HANAプラットフォームドキュメント - SAP HANAプラットフォーム公式ドキュメント
- SAP HANA ODBC接続プロパティ - 公式ODBC接続パラメータ
- SAP HANAサービスとポート(SAPノート2477204) - 正式なポートドキュメント(SAPサポートアクセス要)
コミュニティおよび技術資料
- Qlik Community - SAP HANA ODBC接続文字列 - 接続文字列フォーマットのコミュニティ検証
- Microsoft Power Query SAP HANAドキュメント - MicrosoftのSAP HANAコネクタ公式ドキュメント