4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MariaDBからSQL Serverを直接参照するテーブルを作成

Last updated at Posted at 2017-10-10

概要

Windows上のMariaDBからSQL Serverを直接参照するテーブルを作成します。Accessのリンクテーブル。
Connect Storageという機能を利用します。

経緯

社内データの保管に、以下の理由でSQL Serverを利用していました。

  • ODBCを設定せずにExcelから参照できる。
  • Windows認証を利用できるので、アプリで認証を考慮する必要がない。

後者に関しては、エラー時の対応等、逆にややこしくなりそうでメリットにならないと判断。ただ、前者を利用した、簡易BIとしてのExcelピボットテーブルファイルが利用されているため、うまく対応する必要がありました。

将来性を考えると、10GBに制限されるSQL Server Express Editionは避けたいところ。そこで、まずMariaDBサーバを立ててSQL Serverのデータを参照する形で運用を開始することにしました。

MariaDBには、異種データベースを参照するConnect Storage Engineという機能があることが分かり、これを利用して実装しました。

前提

  • OS: Windows Server 2008 R2
  • Maria DB: 10.2.9
  • SQL Server: SQL Server 2008 R2 Express Edition
    • データベース名: DBTEST
    • DBユーザー名: USERTEST, パスワード: PASSTEST
    • テーブル名: TABLETEST

手順

  1. 管理ツールの「データソース(ODBC)」にて、SQL ServerへのDSNを登録(DSN名を「SQLSVR」とする)

  2. MariaDBにmysqlクライアントで接続し、以下のコマンドでConnect Storage Engineを有効化する。

    INSTALL SONAME 'ha_connect'
    
  3. 以下のコマンドでConnect Storage Engine経由での参照を利用したテーブルエントリを作成する。

    CREATE TABLE TABLETEST ENGINE=CONNECT DEFAULT CHARSET=cp932 TABLE_TYPE=ODBC CONNECTION='DSN=SQLSVR;UID=USERTEST;PWD=PASSTEST';
    

問題点

上記手順だと、該当のデータベースの一覧(show tables)まではできるが、内容を取得(select * from ...)できない。
SELECTしか必要ない場合においても、全データベースに対する全操作の権限(grant all on .)を与えないと値を取得できない。
MariaDBをHubとして各テーブルを見に行くような運用も考えたが、本格的な運用に採用するのは厳しいかもしれない。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?