DataDirect経由でSQLsever2012,2019とExcelをODBC接続する

##DataDirect経由でSQLseverとExcelをODBC接続する
本記事ではDataDirectのドライバーを使用してSQLserverとExcelをODBC接続する方法を説明していきます。

DataDirectはサポートしているバージョンの幅がSQL Server 2000～2012と広いことやWire Protocol技術により、SQL Server Clientが必要ないなど性能のオーバヘッドが少ないことが特徴です。今回は現行手に入る最も古いバージョンのSQLsever2012と最新のSQLserver2019を一つのドライバでアクセスする検証をしてみました。

##実行環境
※SQLseverはどちらもローカルに構築した内容となっています。
OS：Windows10
Server,DB：SQLserver2012、2019

##実行手順
インストールの手順については誘導の通り進めれば問題ないため省略しています。
###1. SQLserverのインストール

SQL server2012、2019をインストールします。
SQL serverについて本記事でフォローできていない部分は以下の記事が分かりやすく参考になります。
https://sql55.com/

・SQLserver2012のダウンロードページ
　https://www.microsoft.com/ja-jp/download/details.aspx?id=29062

・SQLserver2019のダウンロードページ
　https://www.microsoft.com/ja-jp/sql-server/sql-server-downloads

###2. SQL Server Management Studio(以降SSMS)のインストール
データベース、テーブルの作成・操作を行う際に必要になるので、インストールしておきましょう。
・SSMSのダウンロードページ
　https://msdn.microsoft.com/ja-jp/library/mt238290.aspx


###3. DataDirectのインストール
DataDirectのドライバーは以下よりダウンロードできます。
https://www.ashisuto.co.jp/datadirect/app_download/

###4. サーバーのポート番号の設定
SQL server 構成マネージャーを開き、「SQL server ネットワークの構成」から「TCP/IP」を有効にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/007d38db-36f4-2dc1-dd02-31411894bfb0.png)

「TCP/IP」を右クリックして「プロパティ」を開き、「IPALL」の「TCPポート」に任意のポート番号を設定してください。「OK」をクリックして、ポート番号の設定は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/c2f95479-ec69-20a2-b42c-5e34618afcec.png)


###5. Windows ODBC Administratorの設定 
ODBC Administratorを開いたら、
「ユーザーDSN」→「追加」
"DataDirect 8.0 SQL Server Wire Protocol"を選択して「完了」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/71c6b332-a388-5cb1-7b42-62429f8e83a3.png)


追加したユーザーDSNをダブルクリックもしくは「構成」をクリックします。
以下の画面が開くので、任意のデータソース名、ホスト名、設定したポート番号、接続先のデータベース名を設定します。設定ができたら、「Test Connect」で接続を確認して設定は終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/bf355586-c255-992d-6a79-fddc87da0484.png)



###6. SSMSでデータベース、テーブルの作成
SSMSを開き「データベース」を右クリックして、「新しいデータベース」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/f59dd85c-4c84-92eb-5e08-02cd2665fc5b.png)


任意のデータベース名を設定します。ここでは「test2019」としています。
「OK」をクリックすることでデータベースの作成は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/1e9d86de-47f7-e5c0-9859-8d9d88ca6626.png)

作成したデータベースの「テーブル」を右クリックし、「新規作成」→「テーブル」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/21359913-a259-ef63-b9ac-f18d17397559.png)
列名、データ型、NULLの許容の設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/d3e8ca86-547a-a8fa-1bdf-d4a8c83f2933.png)
作成したテーブルを右クリックして、「上位200行の編集」からテーブルを編集していきます。
今回は検証用として以下のサンプルテーブルを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/00aa8543-0d4f-eb06-d622-8552469ee565.png)
SQL server2012に作成したテーブル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/0dfa6678-1589-9d2e-55fb-2fcc2ffd21ad.png)
SQL server2019に作成したテーブル


###7. データベースのアクセス許可設定
「セキュリティ」→「ログイン」を右クリックし、「新しいログイン」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/feee39e7-2ab7-a84c-5dd7-8d7d9a3f4a1e.png)

「SQL Server認証」にチェックして、ログイン名とパスワードを設定します。
これでSQL認証用のアカウントが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/73753168-d08e-9ab9-72d0-dacd7a50ba51.png)



###8. エクセルとSQLserverをODBC接続
それではODBC接続でSQL severからデータを取得してExcelに出力してみましょう。

Excelを開き「データタブ」から「データの取得」→「その他のデータソース」→「ODBCから」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/86d088eb-1d80-d5ad-583e-93407ab85b7f.png)

手順5で設定したシステムDSNを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/7c62a9ef-9e86-2f7e-9243-8d6e58ed0e8a.png)

認証が求められるので、SQL server認証アカウントのアカウント名とパスワードを入力して認証します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/252cc9b6-a03d-b6a6-84e2-5581c92a59e0.png)


「ナビゲーター」が開いたら、作成したテーブルを選択して「読み込み」をクリックすることでExcelにテーブルを出力することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/422adbd3-ea13-1905-b544-e3f9e82d3784.png)

以下に表示例を示しています。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/5c0447e7-b0b0-1bc5-11b8-0165ad1a0d7d.png)
SQL server2012のデータベースから取得したテーブル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628207/ccb69af0-cb9b-f7c1-a5ff-420bf5884503.png)
SQL server2019のデータベースから取得したテーブル