皆さんこんにちは。CData Software Japanインサイドセールスの加藤です。
利用しているデータソースがたくさんあるのに、データベースからアクセスできず困ったことはありませんか?本記事ではスマレジ のデータにCData Smaregi ODBC Driver とSQL Gateway を利用してアクセスし、リンクサーバーとして自前のSQL Serverに組み込んで統一的に扱えるようにします。
SQL Gateway とは?
SQL Gateway とはODBC データソースをSQL Server(またはMySQL)として扱えるようにするツールで、これによってSQL ServerやMySQLに対応したツールからデータソースにアクセスできるようになります。
今回はこのツールで、スマレジさんのデータにSQL Server Management Studio (SSMS)からアクセスしてみます。
本記事で使うもの
- スマレジのアカウント
- CData Smaregi ODBC Driver
- SQL Gateway
- SQL Server
- SQL Server Management Studio
スマレジアクセストークンの取得とAPIの設定
まずはスマレジのデータにアクセスするためのAPIアクセストークンを取得します。そのために、まず取得したスマレジアカウントを使ってログインし、ダッシュボード画面を表示します。その後、左のメニューバーの「設定」→ 「システム連携」→「スマレジAPI設定」と進んでクリックします。
すると「スマレジAPI設定」のページが表示されるので、「受信設定」の項目に進んで「アクセストークン発行」をクリックするとアクセストークンが取得できます。また、すぐ上の「受信機能を利用する」も「利用する」としておきましょう。これでスマレジにAPIを叩けるようになります。「アクセストークン」と「契約ID」はDriver側の設定で使用するので控えておきましょう。
CData ODBC Driver をインストール
それでは、SSMSからスマレジにつなぐためCData Smaregi ODBC Driver をインストールしましょう。[ダウンロード 評価版]をクリックしてサイトからインストーラーをダウンロードします。下のような画面が表示されるので、インストーラの指示に従って、許諾への同意、インストール先の選択と進んでください。注意点として、今回はSQL Gatewayを使用するのでコンポーネント選択では「SQL Gateway」を選択してください。
ODBC DNSの設定
インストールが完了すると、以下のようなDNS の設定画面が表示されます。もしくは、スタートメニューから"odbc" で検索して『ODBCデータソース』アプリケーションを選択してください。すると、データソースの管理画面が表示されるので「システムDNS」タブに移動して「システムデータソース」一覧から「CData Smaregi Sys」の環境に合ったものを選択してダブルクリック、もしくは右の「構成」をクリックしてください(私の環境では他にも色々Driver が入ってます)。
この画面の「必須を表示」タブの項目に『スマレジアクセストークンの取得とAPIの設定』の項目で取得したAPIトークンと契約ID を入力してください(APIトークンは念のため塗りつぶしてます)。
入力後「接続のテスト」ボタンを押して「接続テストに成功しました。」というダイアログが表示されたら、DNS の設定は完了です!
SQL Gatewayの設定
ODBC Smaregi Driver をインストールした際にSQL Gatewayもインストールしたので、早速起動してみましょう。設定画面が表示されるので、「サービス」タブに移動します。ここから「追加」ボタンをクリックすると(私の画面ではすでに追加されていますが)、「新規サービスの追加」画面が出てきます。任意のサービス名を入力して、TDS(SQL Server)を選択、未使用のポート番号を選択してください。
次にユーザーの設定をしましょう。「ユーザー」タブに移動して「追加」をクリックします。以下のような画面が表示されるので、任意のユーザー名とパスワードを入力してOKをクリックしてください。今回は管理者権限を与えていますが、「管理者」を外すと接続製品ごとにアクセス権限を変更できます。必要に応じて利用してください。
以上の手順を終えたら左上の「開始」をクリックして、サービスを開始します。以下のように左に緑色のランプが点灯したら成功です。
これで、このデーターソースにSQL Serverとしてアクセス可能になりました。早速SSMSでアクセスしてみましょう。
SSMSでリンクサーバーを作成し、SQL Gateway スマレジデータにアクセス
SSMSを起動して、自前のSQL Serverに接続します。SQL ServerやSSMSの設定は割愛しますが、こちらの記事などが参考になります。接続できたら、リンクサーバーを作成します。「Server Objects」以下の「Linked Server」を右クリックして、「New Linked Server」をクリックします。
以下のような画面が表示されるので、「Linked Server」に任意の名前を入力し、「Other data source」を選択して「Provider」で「SQL Server Native Client 11.0」を選びます。そして、「Data source」にはSQL Gatewayで設定した内容を(例:「localhost,1433」、"localhost"の後のコロンに注意してください)、「Catalog」にはODBC データソース名(例:「CData Smaregi Sys」)を入力します。
次に、左のバーから「Security」を選択して、「Be made using this security context:」を選びます。「Remote login:」、「With password」の項目には、先ほどSQL Gateway で作成したユーザー情報を入力しましょう。以上でリンクサーバーの設定は完了なので、「OK」をクリックします。
無事リンクサーバーが作成でき、スマレジのデータが取得できました。
SQLクエリを投げてみましょう。クエリの作成は、テーブルを右クリックするとクエリエディタを表示できるのでそこから、もしくは上部のメニューから「クエリの作成」ボタンを押すことでも可能です。
以下のクエリで従業員のデータをすべて取得してみました(サンプルデータです)。
SELECT * FROM [SMAREGI].[CData Smaregi Sys].[Smaregi].[Staff]
無事クエリが通ってますね!
おわりに
本記事では、CData Smaregi ODBC Driver とSQL Gateway を通して、SSMS上でリンクサーバーを作成してスマレジに接続しました。皆さんも様々なデータソースを統合して扱えるSQL Gateway をぜひお試し下さい。