CData Software Blog

クラウド連携のCData Software の技術ブログです。

スマレジデータベースをSQL Serverにリンクサーバーとして組み込む:SQL Gateway

皆さんこんにちは。CData Software Japanインサイドセールスの加藤です。

利用しているデータソースがたくさんあるのに、データベースからアクセスできず困ったことはありませんか?本記事ではスマレジ のデータにCData Smaregi ODBC DriverSQL Gateway を利用してアクセスし、リンクサーバーとして自前のSQL Serverに組み込んで統一的に扱えるようにします。

f:id:TKato:20201114103047p:plain

SQL Gateway とは?

SQL Gateway とはODBC データソースをSQL Server(またはMySQL)として扱えるようにするツールで、これによってSQL ServerMySQLに対応したツールからデータソースにアクセスできるようになります。

今回はこのツールで、スマレジさんのデータにSQL Server Management Studio (SSMS)からアクセスしてみます。

www.cdata.com

本記事で使うもの

スマレジアクセストークンの取得とAPIの設定

まずはスマレジのデータにアクセスするためのAPIアクセストークンを取得します。そのために、まず取得したスマレジアカウントを使ってログインし、ダッシュボード画面を表示します。その後、左のメニューバーの「設定」→ 「システム連携」→「スマレジAPI設定」と進んでクリックします。

https://i.gyazo.com/b4ea221b91ea7dd59f0ed6ef1d02311a.png

すると「スマレジAPI設定」のページが表示されるので、「受信設定」の項目に進んで「アクセストークン発行」をクリックするとアクセストークンが取得できます。また、すぐ上の「受信機能を利用する」も「利用する」としておきましょう。これでスマレジにAPIを叩けるようになります。「アクセストークン」と「契約ID」はDriver側の設定で使用するので控えておきましょう。

https://i.gyazo.com/c8aae1cd53f1741d7a947dcf0d98370c.png

CData ODBC Driver をインストール

それでは、SSMSからスマレジにつなぐためCData Smaregi ODBC Driver をインストールしましょう。[ダウンロード 評価版]をクリックしてサイトからインストーラーをダウンロードします。下のような画面が表示されるので、インストーラの指示に従って、許諾への同意、インストール先の選択と進んでください。注意点として、今回はSQL Gatewayを使用するのでコンポーネント選択では「SQL Gateway」を選択してください。

gyazo.com

https://i.gyazo.com/fbf32432e565ad7a4d1456894d364e3f.png

ODBC DNSの設定

インストールが完了すると、以下のようなDNS の設定画面が表示されます。もしくは、スタートメニューから"odbc" で検索して『ODBCデータソース』アプリケーションを選択してください。すると、データソースの管理画面が表示されるので「システムDNS」タブに移動して「システムデータソース」一覧から「CData Smaregi Sys」の環境に合ったものを選択してダブルクリック、もしくは右の「構成」をクリックしてください(私の環境では他にも色々Driver が入ってます)。

https://i.gyazo.com/4ea5470e141a74fced9b7398d9e1babb.png

この画面の「必須を表示」タブの項目に『スマレジアクセストークンの取得とAPIの設定』の項目で取得したAPIトークンと契約ID を入力してください(APIトークンは念のため塗りつぶしてます)。

https://i.gyazo.com/396a24f57ec30a37c0f8dbab9d7bf1f5.png

入力後「接続のテスト」ボタンを押して「接続テストに成功しました。」というダイアログが表示されたら、DNS の設定は完了です!

次はSQL Gatewayを設定していきます。

SQL Gatewayの設定

ODBC Smaregi Driver をインストールした際にSQL Gatewayもインストールしたので、早速起動してみましょう。設定画面が表示されるので、「サービス」タブに移動します。ここから「追加」ボタンをクリックすると(私の画面ではすでに追加されていますが)、「新規サービスの追加」画面が出てきます。任意のサービス名を入力して、TDS(SQL Server)を選択、未使用のポート番号を選択してください。

https://i.gyazo.com/ee46e1800067d52a0fb37d5976423890.png

https://i.gyazo.com/e08bdfa8dbb5bbb310f4fb80726c0582.png

次にユーザーの設定をしましょう。「ユーザー」タブに移動して「追加」をクリックします。以下のような画面が表示されるので、任意のユーザー名とパスワードを入力してOKをクリックしてください。今回は管理者権限を与えていますが、「管理者」を外すと接続製品ごとにアクセス権限を変更できます。必要に応じて利用してください。

https://i.gyazo.com/37980ed4fcea47baf65a205026d5b353.png

以上の手順を終えたら左上の「開始」をクリックして、サービスを開始します。以下のように左に緑色のランプが点灯したら成功です。

https://i.gyazo.com/d79f9900ab436d1e8f306e4b693f9f34.png

これで、このデーターソースにSQL Serverとしてアクセス可能になりました。早速SSMSでアクセスしてみましょう。

SSMSでリンクサーバーを作成し、SQL Gateway スマレジデータにアクセス

SSMSを起動して、自前のSQL Serverに接続します。SQL ServerやSSMSの設定は割愛しますが、こちらの記事などが参考になります。接続できたら、リンクサーバーを作成します。「Server Objects」以下の「Linked Server」を右クリックして、「New Linked Server」をクリックします。

https://i.gyazo.com/16974dc285ed9a251d0be3f075423032.png

以下のような画面が表示されるので、「Linked Server」に任意の名前を入力し、「Other data source」を選択して「Provider」で「SQL Server Native Client 11.0」を選びます。そして、「Data source」にはSQL Gatewayで設定した内容を(例:「localhost,1433」、"localhost"の後のコロンに注意してください)、「Catalog」にはODBC データソース名(例:「CData Smaregi Sys」)を入力します。

https://i.gyazo.com/6a0319c2d8bb3bfba83058b0c0d7141a.png

次に、左のバーから「Security」を選択して、「Be made using this security context:」を選びます。「Remote login:」、「With password」の項目には、先ほどSQL Gateway で作成したユーザー情報を入力しましょう。以上でリンクサーバーの設定は完了なので、「OK」をクリックします。

https://i.gyazo.com/ef3df745e182a5f896553e8e7ee35c20.png

無事リンクサーバーが作成でき、スマレジのデータが取得できました。

https://i.gyazo.com/f37feed66eae5f9f4e7be2b74ae5885f.png

SQLクエリを投げてみましょう。クエリの作成は、テーブルを右クリックするとクエリエディタを表示できるのでそこから、もしくは上部のメニューから「クエリの作成」ボタンを押すことでも可能です。

https://i.gyazo.com/e0ca9ad3eb767988d054264a2e5099ea.png

以下のクエリで従業員のデータをすべて取得してみました(サンプルデータです)。

SELECT *
  FROM [SMAREGI].[CData Smaregi Sys].[Smaregi].[Staff]

https://i.gyazo.com/367979596a0160be857ed50227a1806b.png

無事クエリが通ってますね!

おわりに

本記事では、CData Smaregi ODBC Driver とSQL Gateway を通して、SSMS上でリンクサーバーを作成してスマレジに接続しました。皆さんも様々なデータソースを統合して扱えるSQL Gateway をぜひお試し下さい。