Armadilloフォーラム

SQL Serverへの接続について

tic-hirano

2017年3月14日 17時23分

お世話になっております,平野と申します.

Armadillo-840上でQtアプリからSQL Serverへアクセスするため,以前の投稿(https://armadillo.atmark-techno.com/forum/armadillo/1404)を参考にunixODBC+FreeTDS環境を構築しようとしていますが「There was a problem connecting to the server」というメッセージで動作停止してしまいます.
解決方法はありますでしょうか?

開発環境:ATDE5 i386 (20161130)
Linuxカーネル:v3.4-at20
ユーザランド:v20160927

環境構築の手順は次の通りです.
・SDブートのDebianを構築する
 http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
・下記サイトを参考にunixODBCとFreeTDSをインストールする
 http://d.hatena.ne.jp/htgc/20130310/1362863515
 ・unixODBC-2.3.4
  ./configure --prefix=/usr/local/unixODBC-2.3.4
 ・freetds-1.00.27
  ./configure --prefix=/usr/local/freetds-1.00.27 --enable-shared --enable-static --enable-odbc-wide --with-unixodbc=/usr/local/unixODBC-2.3.4
 ・設定ファイル
  ・「tds version = 7.4」に変更
・Debianでの接続確認は成功

root@debian:~/test# /usr/local/freetds-1.00.27/bin/tsql -S [DBラベル] -U [ユーザ名] -P [パスワード]
locale is "C"
locale charset is "ANSI_X3.4-1968"
using default charset "UTF-8"
1> select @@version
2> go
 
Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
        Feb 20 2014 20:04:26
        Copyright (c) Microsoft Corporation
        Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 10240: )
 
(1 row affected)

・AtmakDistへの移植
 ・/usr/local/unixODBC-2.3.4/ 以下のbin, lib をコピー
 ・/usr/local/freetds-1.00.27/ 以下の bin, lib をコピー
 ・コンフィグおよび環境変数を設定
・AtmarkDistでの接続確認は失敗

[root@armadillo840-0 (ttySC2) /mnt/odbc]# /usr/local/freetds-1.00.27/bin/tsql -S [DBラベル] -U [ユーザ名] -P [パスワード]
locale is "C"
locale charset is "ANSI_X3.4-1968"
using default charset "UTF-8"
There was a problem connecting to the server

 ・ネットワーク パケットを確認してもコネクションを張れていない

以上,よろしくお願いします.

コメント

at_takashi.sasayama

2017年3月16日 15時00分

笹山です。

こちらでも同様の現象を確認しました。
問題の切り分けが難しそうだったので、
別の方法ですが unixODBC+FreeTDS で MS SQL Server と接続確認できた方法を参考までに記載します。

■必要なパッケージのダウンロードと展開

[ATDE5]$ cd atmark-dist
 
wget http://ftp.jp.debian.org/debian/pool/main/f/freetds/freetds-bin_0.91-2+deb7u1_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/f/freetds/freetds-common_0.91-2+deb7u1_all.deb
wget http://security.debian.org/debian-security/pool/updates/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u5_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.10-3.1_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/g/gnutls26/libgnutls26_2.12.20-8+deb7u5_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.12-3_armhf.deb
wget http://security.debian.org/debian-security/pool/updates/main/libt/libtasn1-3/libtasn1-3_2.13-2+deb7u3_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/u/unixodbc/libodbc1_2.2.14p2-5_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.2-1.1_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/r/readline6/libreadline6_6.2+dfsg-0.1_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/n/ncurses/libtinfo5_5.9-10_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/r/readline6/readline-common_6.2+dfsg-0.1_all.deb
wget http://ftp.jp.debian.org/debian/pool/main/f/freetds/libsybdb5_0.91-2+deb7u1_armhf.deb
 
 
dpkg-deb -x freetds-bin_0.91-2+deb7u1_armhf.deb ./romfs
dpkg-deb -x freetds-common_0.91-2+deb7u1_all.deb ./romfs
dpkg-deb -x libgcrypt11_1.5.0-5+deb7u5_armhf.deb ./romfs
dpkg-deb -x libgnutls26_2.12.20-8+deb7u5_armhf.deb ./romfs
dpkg-deb -x libgpg-error0_1.10-3.1_armhf.deb ./romfs
dpkg-deb -x libltdl7_2.4.2-1.1_armhf.deb ./romfs
dpkg-deb -x libodbc1_2.2.14p2-5_armhf.deb ./romfs
dpkg-deb -x libp11-kit0_0.12-3_armhf.deb ./romfs
dpkg-deb -x libreadline6_6.2+dfsg-0.1_armhf.deb ./romfs
dpkg-deb -x libsybdb5_0.91-2+deb7u1_armhf.deb ./romfs
dpkg-deb -x libtasn1-3_2.13-2+deb7u3_armhf.deb ./romfs
dpkg-deb -x libtinfo5_5.9-10_armhf.deb ./romfs
dpkg-deb -x readline-common_6.2+dfsg-0.1_all.deb ./romfs
 
 
mkdir -p ./romfs/usr/lib/arm-linux-gnueabihf/
cp -R /usr/lib/arm-linux-gnueabihf/gconv ./romfs/usr/lib/arm-linux-gnueabihf/

■freetds.conf の配置

./romfs/etc/freetds 配下に設定済みのfreetds.confを配置します

■イメージのビルド

以下のコマンドでイメージをビルドします。

make image

作成されたイメージで Armadillo-840 を起動します。

■動作確認

[root@armadillo840-0 (ttySC2) ~]# tsql -S [DBラベル] -U [ユーザー名] -P [パスワード]
locale is "C"
locale charset is "ANSI_X3.4-1968"
using default charset "ISO-8859-1"
1> select @@version
2> go
 
Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)
        Oct 28 2016 18:17:30
        Copyright (c) Microsoft Corporation
        Express Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 14393: )
 
(1 row affected)
1>

平野です.

対応ありがとうございます.
tsqlは動作するようになりました.
なお,gconvをコピーする個所はATDE5では下記で対応しました.

cp -R /usr/arm-linux-gnueabihf/lib/gconv ./romfs/usr/lib/arm-linux-gnueabihf/

Qtアプリでアクセスするには下記の追加をおこないました.

■必要なパッケージのダウンロードと展開

[ATDE5]$ cd atmark-dist
wget http://ftp.jp.debian.org/debian/pool/main/u/unixodbc/odbcinst1debian2_2.2.14p2-5_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/f/freetds/tdsodbc_0.91-2+deb7u1_armhf.deb
 
dpkg-deb -x -v odbcinst1debian2_2.2.14p2-5_armhf.deb ./romfs
dpkg-deb -x -v tdsodbc_0.91-2+deb7u1_armhf.deb ./romfs

■設定ファイルの内容
/etc/odbc.ini

Driver          = /usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so

/etc/odbcinst.ini

Driver          = /usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so
Setup           = /usr/lib/arm-linux-gnueabihf/odbc/libtdsS.so

■Qtアプリ
下記を参考にデータを参照するアプリケーションを作成したところデータが取得できました.
http://moon-phase.cocolog-nifty.com/blog/2014/06/qt5-qt4qtsql-81.html