Windows10にて ODBCドライバーで FileMakerPro15 から SQL Server 2016 に接続する

# Windows10 の開発マシンにて FileMakerPro15 から SQL Server 2016 に ODBC で接続する
　ファイルメーカーの技術仕様・サポート・ヘルプのどれを参照しても、具体的な ODBCドライバーの選択や システムDSN を選ぶこと、システムDSN の追加では 64bit 用の ODBCデータソースアドミニストレータ―を利用すること等々。具体的に設定を行うのに必要な情報がなかなか揃わなかったので記事を残します。結論のひとつである Windows10 マシン側での設定手順を簡潔に記すと次のとおりです。**FileMakerPro15 では、このとおりに設定したデータソースでしか SQL Server 2016 に接続できなかった** ということが、この記事が伝えたい要点になります。理由は深く追及できていません。

 - Windows10 マシンにて、コントロールパネルの管理ツール内にある **ODBC データ ソース (64ビット)** を開いて、ODBCデータソースアドミニストレータ―(64bit)の画面を表示する。
 - **システムDSN** タブを選んで追加を押下し、セットアップするデータソースのドライバーは **SQL Server** を選択する。
 - 新規データソースの作成は、任意で新しいデータソースの名前、任意の説明、そして、**接続する SQL Server サーバー名** を入力します。開発マシン内に SQL Server と FileMaker が同居しているのであれば **(local)** という設定でも接続できます。マシンのPC名を書いてもよいです。
 - SQL Server が、ログインIDの権限の確認を行う方法は？ これは SQL Server の設定によると思います。**SQL Server のログイン認証が Windows 認証** であれば、設定は初期設定の **ネットワークへのログインID** で接続できます。
 - **規定のデータベースを以下のものに変更する** この設定にチェックを入れると、SQL Server にアクセスしてデータベース名を取ってくるようです。ここまでの設定にて SQL Server へのアクセスが行えなかった場合、これまでの設定を見直す必要があるでしょう。プルダウンにて表示されるリストから接続するデータベースを選択します。
 - 次へすすみ初期設定にて完了を押下する。

## ODBCデータソースと FileMakerPro15 どちらも初めての経験で調べるのに苦労した
　この設定手順は、Windows10 マシンにて FileMakerPro15 が使用するデータソースを用意する手順になります。繰り返しになりますが、**FileMakerPro15 側で設定する際にこの手順で設定した ODBCデータソースでしか SQL Server 2016 に接続できませんでした。** この手順で設定した ODBCデータソースとは **「ODBC データ ソース (64ビット)」「システムDSN」「ODBCドライバーは SQL Server」** この3つの条件を満たした設定のことです。一部の条件しか満たしていない設定のなかには、ファイルメーカーの設定画面に表示すらされないといったことがありました。このことが ODBCドライバーも FileMakerPro15 も詳しくない初心者としては迷い、苦労する原因になりました。ファイルメーカーのサポートやヘルプにはヒントになる情報が点在していましたが、基本的にテキストのみで書かれた手順で具体的に指定される設定も少なかったので集めて理解するのに苦労しました。また、Windows10 マシンに 3種類の SQL Server 用 ODBCドライバーがあり、違いが名称から推測できなかったことも苦労した原因でした。これらの苦労した原因から考えて2つの対策を用意しました。ひとつは、SQLサーバーに最近接するようになった利用者向けの SQL Server 用 ODBCドライバーのまとめを用意したことです。もうひとつは、 FileMakerPro15 側での設定手順を画面イメージを用いて説明しました。この後述したファイルメーカー側の設定手順は、普段ファイルメーカーを利用している方には不要なものなのだろうと思います。しかし、ファイルメーカーに接したことのない方には役に立つだろうと考えています。

## SQL Server 2016 に接続する ODBCドライバーは **SQL Server** を使用した
　ファイルメーカーとSQL Server 2016 を接続するのに、ODBCドライバーを使用する必要があることは Google で検索すればわかることです。しかし、次の疑問の答えを見つけることはできませんでした。 **ODBCドライバーはどれを使えばいいのか。** SQL Server に接続するための ODBCドライバーの選択肢は次の3つでした。
1. SQL Server（SQL Server ODBC Driver 10.0）
2. SQL Server Native Client 11.0
3. ODBC Driver 13 for SQL Server
ODBCデータソースアドミニストレータ―(64bit)の画面で見た3種類は次のようになります。
![12_Windows10_ODBCドライバー(64bit)アドミニストレータ―の選択画面.png](https://qiita-image-store.s3.amazonaws.com/0/155681/8ba96040-6144-0ef7-993d-9f00ac47966b.png)

　FileMakerPro15 で SQL Server 2016 に接続ができたのは **SQL Server** だけでした。これは、**SQL Server ODBC Driver 10.0** に相当するドライバーです。文章にすると増々 ODBCドライバーの名称が引っかかるので補足します。これについては、Microsoft SQL Server の 2005年からの各バージョンを数字2桁のバージョン表記で追いかけてみるとすっきりします。
　Microsoft SQL Server のインストール先フォルダ C:\Program Files\Microsoft SQL Server 下を参照ください。数字2桁または3桁のフォルダがみつかります。
![00_ProgramFiles-MicrosoftSQLServer-130.PNG](https://qiita-image-store.s3.amazonaws.com/0/155681/6a4f99bb-b44d-e08f-d4ba-b220d4a442a7.png)
　80、90、100、110、120、130、140
というフォルダが並んでいます。これが、SQL Server の数字2桁バージョン表記に対応しているようです。SQL Server 2016 であれば、数字2桁バージョンは 13.0 となるようです。参考としてマイクロソフトのヘルプを紹介します。
（参考）**SQL Server とそのコンポーネントのバージョン、エディション、および更新プログラムのレベルを確認する方法**
https://support.microsoft.com/ja-jp/help/321185/how-to-determine-the-version,-edition-and-update-level-of-sql-server-and-its-components
表にしてみると次のようになります。

| SQL Server Version | 数字2桁Ver | ODBCドライバー名称              |
|:------------------:|:-----------|:------------------------------|
| SQL Server 2005    | 9.0        |                               |
| SQL Server 2008    | 10.0       | SQL Server ODBC Driver 10.0   |
| SQL Server 2008R2  | 10.5       |                               |
| SQL Server 2012    | 11.0       | SQL Server Native Client 11.0 |
| SQL Server 2014    | 12.0       |                               |
| SQL Server 2016    | 13.0       | ODBC Driver 13 for SQL Server |
　SQL Server 新バージョンのリリース年とODBCドライバーのリリース年が厳密に一致するわけではありませんが、各ODBCドライバーがいったい何なのかをつかむヒントとしては十分に助けとなります。わかりづらくて引っかかる **SQL Server** という名称の ODBCドライバーは **「SQL Server ODBC Driver 10.0」** と表記すべきものが、Windows OS にて昔から変わらず **「SQL Server」** と表記されていて、初めて見るものには分かりづらいのです。なぜ FileMakerPro15 から SQLサーバー へ接続するのに、年代としてもっとも古いであろう **「SQL Server」** でなければならなかったのか、理由はわかっていません。「おわりに」にてファイルメーカー社のサポートサイトのリンクを紹介しました。ただし、Microsoft SQL Server 2016 については掲載されていません。（2017年2月14日現在）

## FileMakerPro15 での外部データソース作成手順
　最初に概略を説明します。これは、ファイルメーカーが利用する外部データソースを、Windows10 の ODBCデータソースアドミニストレータ―(64bit) で作成した **データソースを指定して** 作成する手順になります。すでに作成してあるデータソースを指定して外部データソースを作成する。わかりづらいので最初につかんでおかないと自分が何を設定しているのか画面を操作していて混乱します。ファイルメーカー社のサポートやヘルプに掲載されている文章の手順を参考に、実機で手を動かして設定しながら取得したイメージを使用しています。ファイルメーカーと接するのがほとんど初めてという方の役に立てば幸いです。

###（１） FileMakerPro15 にて、ファイル-管理-外部データソース を選んで「外部データソースの管理」を表示する。
![01_FMPro15_ファイル-管理-外部データソース.png](https://qiita-image-store.s3.amazonaws.com/0/155681/f0e4df7b-63ca-0ccd-955e-d4235e1a7145.png)
　次の手順説明に関係しますが、外部データソースという言葉の混乱がファイルメーカーで設定をする際に頭を悩ませます。**DSN** という言葉が出てきますが、難しいことはなく **Data Source Name（データソース名）** のことです。Access で外部データ接続を ODBC にて行う場合は ODBCデータソースアドミニストレータ―で作成済みのデータソースを選択するだけで設定が済むことがあります。これは Windows 上で作成したデータソースを Access がそのまま利用できるということです。それと比べれば、ファイルメーカーでの外部データソースの作成は、ファイルメーカー用の特別な設定であるといえます。

###（２）  外部データソースの管理画面にて外部データソースを新規作成する。
![02_FMPro15_外部データソース管理画面.png](https://qiita-image-store.s3.amazonaws.com/0/155681/a1fcc6f1-337f-b5ac-49c4-63ca777a1579.png)
　画面イメージにて、すでに作成済みの外部データソースは正しい設定を探すために総当たりを行ったときの設定です。ODBCデータソースアドミニストレータ―での設定作成にて、ユーザーとシステムどちらの DSN を選択し ODBCドライバーのどれを選べば接続できる設定となるのかわからなかったため、すべてのパターンの設定を作成して総当たりを行いました。次の説明に必要だったため設定を残しています。
　**名前列** にある「FM2SQLSV22」は **FileMakerPro15 で作成した外部データソース** の名称。**詳細列の DSN:** に続く「FM2SQLSV6」は、Windows10 マシンの **ODBCデータソースアドミニストレータ―(64bit) にて作成したデータソース**の名称です。なんとなく思い出せるだろうぐらいの名前を付けて試行錯誤をはじめた結果、ファイルメーカーのこの画面にてすでに試したことが何だったのかわからなくなりました。説明をわかりやすくするために、長すぎるけれどわかりやすい名称のデータソースを作成してみました。

###（３）  データソースの編集画面にて外部データソースに名前をつけて **DSNを指定** する。認証を SQL Server の設定に合わせて設定する。
　ODBCデータソースアドミニストレータ―(64bit) にて長いデータソース名の設定を作成しました。こんなに長い名前の設定が他の問題を起こさないか分かりませんので、適度な長さで後から見ても内容のわかる名前を工夫してつけてください。次のイメージは、ファイルメーカーでの外部データソース編集画面です。
![03_FMPro15_データソースの編集画面.png](https://qiita-image-store.s3.amazonaws.com/0/155681/e8076877-8885-0c88-b3f9-131333094e3a.png)
　外部データソースに名前をつけて、ODBC を選択します。今回は開発マシンの SQL Server 2016 の設定が Windows認証であるため、Windows の認証を使用(シングルサインオン)を選択しています。接続する SQL Server の環境に合わせて設定してください。そして、**DSN を指定** します。DSN の指定とは、ODBCデータソースアドミニストレータ―(64bit)で作成した、ODBCデータソースを選択することです。
![04_FMPro15_ODBCデータソースを選択.png](https://qiita-image-store.s3.amazonaws.com/0/155681/605bec49-18fb-8826-fa4f-1e4eb1dc39f4.png)
「64bitシステムDSN_SQLServerODBCドライバ10」という設定内容をぎっちり盛り込んだ名前の ODBCデータソースを作成しておきました。追加された外部データソースは次のとおり。わかりやすい長すぎる名前の設定になりました。左がファイルメーカーの外部データソース名、右が ODBC のデータソース名です。
![05_FMPro15_外部データソース管理画面_新規作成後.png](https://qiita-image-store.s3.amazonaws.com/0/155681/49ac2b84-0805-9c35-e8f9-bdf97e285d26.png)

###（４）ファイル-管理-データベース を選んで「データベースの管理」を表示する。作成した外部データベースから追加するテーブルを指定する。
![06_FMPro15_ファイル-管理-データベース.png](https://qiita-image-store.s3.amazonaws.com/0/155681/4d425043-8f3b-f6aa-73ca-b35dc18dd240.png)

　作成した外部データソースをデータベースの管理にてテーブルを指定して追加します。「テーブルを追加」のボタンは左下「印刷」のうえにあります。
![07_FMPro15_データベース-リレーションシップ-テーブルを指定.png](https://qiita-image-store.s3.amazonaws.com/0/155681/251399e7-5490-182e-e898-ef1811d665b2.png)

　今回の設定では外部データソースの新規作成-データソースの編集でフィルタテーブルにてテーブルの指定をしませんでした。そのため、外部データソースとして表示されたデータベースからテーブルを指定する必要があります。接続対象を特定のテーブルに絞った外部データソースを作成することも可能です。
![08_FMPro15_データベース-リレーションシップ-テーブルを指定_テーブルを選択.png](https://qiita-image-store.s3.amazonaws.com/0/155681/d727a793-984b-3da4-f10d-65eabbd1cd90.png)
　SQL Server 2016 に用意したサンプルデータベース「NorthwindJ」にある受注・社員・得意先・受注明細・運送会社のテーブルを追加したところです。
![09_FMPro15_SQLServerに接続して追加したテーブル.png](https://qiita-image-store.s3.amazonaws.com/0/155681/7b208edb-4cd5-6ba3-6417-8c36e7e16e5b.png)

###（５）外部データソースから追加したテーブルを表示する。
　「データベースの管理」画面でテーブルタブを表示してみます。
![10_FMPro15_SQLServerに接続して追加したテーブル.png](https://qiita-image-store.s3.amazonaws.com/0/155681/f3ec23fa-c1cd-dcc6-0310-acdff0fe73d6.png)
　ソース列の内容が、外部データソースの管理で新規作成したデータソースになっています。それに対して、ファイルメーカーで作成したテーブルはソースが FileMaker となっています。

　追加したテーブルは、ファイルメーカーのローカルに作成したテーブルと同じようにレイアウトから選択して表示することができます。
![11_FMPro15_SQLServerに接続して表示したテーブル.png](https://qiita-image-store.s3.amazonaws.com/0/155681/a1bc13e1-7144-ad67-ef74-6c33042abb09.png)

## おわりに
　Windows10 にて ODBCドライバーで FileMakerPro15 から SQL Server 2016 に接続することができました。まだこれが何に活かせるのか考えはじめたところです。ファイルメーカー初心者がやったら出来そうなことをやってみたら出来たというだけの記事ですが、同じようにやってみようかなとネット上で情報収集をはじめた際に目について役に立てば幸いです。特に SQL Server 20XX と 10.0、11.0、13.0 の関係は、協力者が教えてくれなければ、しばらくは知らずにいたと思います。
　最後に、ファイルメーカー社の **外部 SQL データソースに対してサポートされている ODBC ドライバ** のリンクをご紹介します。ファイルメーカー社の公式サポートサイトです。この記事で書いていることと異なります。 SQL Server 2016 については、まだ掲載されていません。[リンク](http://filemaker-jp.custhelp.com/app/answers/detail/a_id/9107/~/%E5%A4%96%E9%83%A8-sql-%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B-odbc-%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90)（2017年2月13日時点で確認）最終更新日時: 2016年12月16日 12:00 AM のウェブページを確認しました。