LoginSignup
1
1

Claris FileMaker と SQL Serverをリンクサーバーで繋ぐ

Posted at

はじめに

Claris FileMaker と SQL Serverをリンクサーバーで繋いでみました。

リンクサーバーで接続する事は成功しましたが、Insert、Updateができず断念しました。しかし、Selectは可能であるため、SQL Serverにデータを流し込みたい場合には非常に有用な手段ではないかと考えています。

※ この連携を行い半年が経ちましたが非常に安定して動作しています。

構成

OS:Windows 11 Pro
SQL Server 2019
Claris FileMaker 2023

ODBCドライバのインストール

FileMaker xDBC クライアントドライバより、ODBCドライバをダウンロードし、インストールを行います。

image.png

データソースの新規作成

インストールが完了すると、データソース上にFileMaker ODBCの項目が現れます。

データソースの作成は64bit版となります。
※ 32bit版では出てきません。

image.png

FileMaker DNSの構成

名前と説明の入力

名前はリンクサーバー名に利用されます。
説明は不要です。

image.png

ホストに接続して使用可能なデータベースの名前を取得する。 にチェックをつけなくても問題ないです。

image.png

先程のホストに接続して使用可能なデータベースの名前を取得する。 のチェックを入れると、自動的にデータベース名が表示されます。

テキストフィールドをlong varcharとして記述 に必ずチェックを入れてください。

image.png

ここで 「テキストフィールドをlong varchar として記述」 にチェックを入れます。
その後、テスト接続を行い問題なければ画面を閉じます。

リンクサーバーの設定

SQL Serverでリンクサーバーを作成します。
ページの選択の全般より、以下の項目を設定します。

  • リンクサーバー:FM_HOGEHOGE
  • プロバイダー名:Microsoft OLE DB Provider for ODBC Drivers
  • データ ソース:hogehoge

データ ソースの hogehoge「FileMaker DNSの構成」 で作成した名称です。

image.png

FileMaker側に接続するユーザーIDとパスワードを入力

セキュリティの項目で このセキュリティ コンテキストを使用する に変更し、FileMakerに接続するユーザーIDとパスワードを入力します。

image.png

設定が完了し、接続するとリンクサーバーの接続確認で以下のメッセージが表示されます。

image.png

FileMakerからデータを取得する

接続方法

FileMakserと接続するにはOPENQUERY (Transact-SQL)を利用します。

今回の例だと、以下のSQL文で取得することができます。

SELECT * FROM OPENQUERY (FM_HOGEHOGE, 'SELECT * FROM "ほげほげ"'); 

FileMakerのSQL文に合わせる

FileMakerのSQL文は列名等をダブルクォーテーションで囲む必要があります。この辺りの仕様は公開されているのでドキュメントを確認してください。
SELECT ステートメント

参考

FileMakerから取得したクエリデータはTEXT型として扱われるため、NVARCHAR型などSQL Server側で明示的に扱いやすいデータ型に変換して利用したほうが扱いやすいです。

参考委程度ですが、データ取得時のサンプルSQLを記載します。

SELECT
  REPLACE(REPLACE(TRIM(UserName),' ',''),' ','')  AS UserName
 ,REPLACE(REPLACE(TRIM(UserAddr),' ',''),' ','')  AS UserAddr 
 ,REPLACE(REPLACE(TRIM(UserTel),' ',''),' ','')   AS UserTel 
FROM
(
  SELECT
    CONVERT(NVARCHAR,ISNULL(氏名,'')) AS UserName
   ,CONVERT(NVARCHAR,ISNULL(住所,'')) AS UserAddr
   ,CONVERT(NVARCHAR,ISNULL(電話,'')) AS UserTel
  FROM OPENQUERY (FM_HOGEHOGE, 'SELECT * FROM "ほげほげ"')
) AS A

FileMaker DNSの構成時に テキストフィールドをlong varcharとして記述 にチェックを入れましたが、実際にはNVARCHAR型ではなくTEXT型として解釈されるようです。

1
1
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
1
1