2015年9月14日月曜日

【Microsoft Azure】SQLサーバー/SQL Databaseへ接続するSQLCMDとBCPをCentOSにインストールする

以前FreeTDSを使ってLinuxからSQL Databaseへの接続を試みましたが、今度はMicrosoftが提供しているSQLCMDから接続してみたいと思います。

なお、Ubuntuの手順はここに書いてあります。
http://blogs.msdn.com/b/joseph_idzioreks_blog/archive/2015/09/13/sql-server-sqlcmd-and-bcp-on-ubuntu-linux.aspx

もちろん、CentOSから挑戦します。
今回は6.7に導入してみますが、7系もほぼ同様かと思います。

まず、Cコンパイラとライブラリをインストールします。
# yum -y install gcc
yum -y install libssl glibc

次は、unixODBCをソースからインストールします。
RPMだと2.2系が入りますが、今回必要なのは2.3系です。
最後に、ライブラリのシンボリックリンクを作っておきます。
wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gz
# tar zxvf unixODBC-2.3.0.tar.gz 
cd unixODBC-2.3.0
# ./configure --disable-gui --disable-drivers --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE
make
# make install
ln -s /usr/local/lib/libodbcinst.so.1 /lib/libodbcinst.so.1
ln -s /usr/local/lib/libodbc.so.1 /lib/libodbc.so.1
ldconfig

さて、SQLCMDとBCPのインストールです。
lddで依存するライブラリがあるか確認してからインストールします。
wget http://download.microsoft.com/download/B/C/D/BCDD264C-7517-4B7D-8159-C99FC5535680/RedHat5/msodbcsql-11.0.2270.0.tar.gz
# tar zxvf msodbcsql-11.0.2270.0.tar.gz 
# cd msodbcsql-11.0.2270.0/lib64/
# ldd ./libmsodbcsql-11.0.so.2270.0 
ldd: warning: you do not have execution permission for `lib64/libmsodbcsql-11.0.so.2270.0'
linux-vdso.so.1 =>  (0x00007ffc16a5e000)
libcrypto.so.6 => /usr/lib64/libcrypto.so.6 (0x00007ffa831d3000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ffa82fcf000)
librt.so.1 => /lib64/librt.so.1 (0x00007ffa82dc6000)
libssl.so.6 => /usr/lib64/libssl.so.6 (0x00007ffa82b77000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007ffa82973000)
libodbcinst.so.1 => /lib/libodbcinst.so.1 (0x00007ffa8275b000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007ffa82474000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007ffa82230000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007ffa81f29000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffa81ca5000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffa81a8f000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffa81871000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffa814dd000)
libz.so.1 => /lib64/libz.so.1 (0x00007ffa812c7000)
/lib64/ld-linux-x86-64.so.2 (0x0000003093c00000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007ffa810c2000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007ffa80e96000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007ffa80c8b000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007ffa80a87000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007ffa8086d000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007ffa8064d000)
# cd ..
# ./install.sh install --force

インストールが終わったら、SQLCMDとBCPコマンドの動作を確認します。
# sqlcmd -S xxxx.database.windows.net -U ユーザー名 -P パスワード
1> Select @@version;
2> go
                                                                                                                                                                                                                                                                                                            
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Azure (RTM) - 12.0.2000.8 
Sep  2 2015 20:51:51 
Copyright (c) Microsoft Corporation
                                                                                                                                                                                                       

(1 rows affected)
1> exit
# bcp
usage: bcp {dbtable | query} {in | out | queryout | format} datafile
  [-m maxerrors]            [-f formatfile]          [-e errfile]
  [-F firstrow]             [-L lastrow]             [-b batchsize]
  [-n native type]          [-c character type]      [-w wide character type]
  [-N keep non-text native] [-q quoted identifier]
  [-t field terminator]     [-r row terminator]
  [-a packetsize]           [-K application intent]
  [-S server name or DSN if -D provided]             [-D treat -S as DSN]
  [-U username]             [-P password]
  [-T trusted connection]   [-v version]             [-R regional enable]
  [-k keep null values]     [-E keep identity values]
  [-h "load hints"]         [-d database name]

大雑把ですが、CentOSでもUbuntu同様に動かすことができました。





0 件のコメント: