web-dev-qa-db-ja.com

sqlcmdが機能しない:lib libmsodbcsql.13.dylibを開けません

mssql-toolsmsodbcsqlをインストールしました。

そして/usr/local/homebrew/lib/libmsodbcsql.13.dylib/usr/local/lib/libmsodbcsql.13.dylibにシンボリックリンクしました

しかし、sqlcmdは依然としてlibの不足について不平を言っています。

%> sqlcmd -S IP
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Can't open lib '/usr/local/lib/libmsodbcsql.13.dylib' : file not found.

何か案は?

4
daisy

@thrigが言うように、私は問題をデバッグするためにdtrussを試みました、

Sudo dtruss sqlcmd -S someserver

そして、出力から、sqlcmdは/usr/local/lib/libodbcinst.2.dylibを読み取ろうとして失敗しました。

libodbcinst.2.dylibのシンボリックリンクを追加すると問題が解決したため、依存関係が欠落していることが原因です。

3
daisy

これはすべてのマシンで発生するわけではありませんが、今日は発生しました。私たちは走った

brew install msodbcsql

出会った

libmsodbcsql13.dylib not found

私たちは走った

brew link msodbcsql

これは次の結果をもたらしました:

4 symlinks created

これで問題が解決しました。

2
Radio

解決

まず、パッケージを再インストールしてみてください:

brew tap Microsoft/msodbcsql https://github.com/Microsoft/homebrew-mssql-release
ACCEPT_EULA=y brew reinstall --no-sandbox msodbcsql mssql-tools

次に、それがまだ発生している場合は、次を実行します。

cp -v "$(brew list msodbcsql | grep odbcinst.ini$)" ~/.odbcinst.ini

sQLの場所を定義するINIファイルをコピーするODBCドライバ。

バグレポート: SQL Server:Ca n't open lib 'ODBC Driver 13 for SQL Server'

次に、sqlcmd -S localhostまたはisql -v -k <connection-string>を使用してSQL設定をテストします。

参照: MicrosoftのインストールODBC LinuxおよびmacOS上のSQL Server用ドライバー

デバッグ

$ odbcinst -j # Verify the config.
$ sleep 20 && sqlcmd -S localhost & # Run `sqlcmd` in the background.
$ Sudo fs_usage -f filesys | grep -w sqlcmd | grep -e open -e access -e stat64
open              /Users/myuser/.odbcinst.ini                 
access            /usr/local/lib/ODBC Driver 13 for SQL Server
access            /lib>>>>>>>>>>>>>>>>>>>>                    
access            /usr/lib/ODBC Driver 13 for SQL Server      
stat64            ODBC Driver 13 for SQL Server               
stat64            /opt/X11/lib/ODBC Driver 13 for SQL Server  
stat64            /usr/lib/ODBC Driver 13 for SQL Server      

Linuxの場合、Anaconda関連の問題 SQL ServerのODBCドライバー13がlibを開けない を参照してください。

1
kenorb

私は同じ問題に遭遇し、dtrussトレースはデイジーによって記述されたのと同じ出力を生成しました。

不足しているlibの場所はunixodbcドライバーにあります。ない場合は、brew install unixodbcを使用してインストールできます。私のシステムでのリンクに必要なリンクコマンドとパスは次のとおりです。

ln /usr/local/Cellar/unixodbc/2.3.6/lib/libodbcinst.2.dylib /usr/local/lib/libodbcinst.2.dylib

明らかに、別のバージョンを使用している可能性がありますが、パス/usr/local/Cellar/unixodbcの下に配置する必要があります

このリンクを追加した後、ターミナルからローカルおよびリモートのSQLサーバーに接続できます。 macOS High Sierra 10.13.5を使用しています。

0
Shane