none
SQLServerとのODBC接続に関して RRS feed

  • 質問

  • RedHat9上にインストールした
    unixODBC-2.2.11
    freetds-0.63
    libiconv-1.10
    を利用し既存のSQLServer(Ver8.00.760SP3/固定のグローバルIPアドレスにて接続)にODBC接続をしております。
    【設定】
     /usr/local/etc/freetds.conf
    [mssql]
            host = xxx.xxx.xxx.xxx
            port = 1433
            tds version = 7.0
            charset = sjis
            client charset = sjis
    ;       #language = japanese


    データベース:A(既存)
    データベース:B(新規)
    ユーザー:hoge(既存)
    ユーザー:fuga(新規)
    を登録してあるとします。

    このとき、DB:Aには
    RedHatのコンソールからユーザーhoge、fugaともに接続できます。
    このときの~huga/.odbc.ini
    [ODBC Data Sources]
    freetds = FreeTDS ODBC Driver

    [freetds]
    Driver = /usr/local/lib/libtdsodbc.so
    Description = Microsoft SQL Server

    Servername  = mssql
    Database = A

    次に・・・・

    ~huga/.odbc.ini
    [ODBC Data Sources]
    freetds = FreeTDS ODBC Driver

    [freetds]
    Driver = /usr/local/lib/libtdsodbc.so
    Description = Microsoft SQL Server

    Servername  = mssql
    Database = B
    として、コンソールでの接続をしようとすると接続できません。
    何か設定の問題でもあるのでしょうか?

    接続できないときのSQLServerのログ
    ユーザー 'B' のログインに成功しました。接続 : 非信頼関係。
    ユーザー 'B' はログインできませんでした。
    とでます。

    データベースの権限などは接続できるものと同じ設定となっております。

    2006年6月16日 4:35

すべての返信

  • データベース A に接続するユーザとデータベース B に接続するユーザは同一ですか?

    おそらく、データベースへの権限が足りないためだと思われます。
    対象ユーザのデータベース アクセスを見てください。

    2006年6月18日 23:57
  • おがわみつぎさま
    早速のご回答ありがとうございます。

    二つのDB、AとBに接続するユーザーは同じユーザです。
    二つ設定してあり、DB・Bへの接続は両方ともで失敗します。

    2006年6月19日 0:44
  • コマンドラインから osql で、接続できるか確認してください。
    osql -S ユーザID -P パスワード -d B
    これで接続できれば、FreeTDS の設定の問題。
    これで接続できなければ SQL Server 2000 の設定の問題です。
    まずは問題の切り分けをしましょう。

    2006年6月19日 13:10
  • おがわさま
    たびたびのご回答ありがとうございます。
    こちらの環境ではosqlが利用できず。

    isql -v freetds USER PASS
    で試しましたが
    [][unixODBC][FreeTDS][SQL Server]ユーザー 'USER' はログインできませんでした。
    [][unixODBC][FreeTDS][SQL Server]ログイン 'USER' で要求されたデータベースを開けません。ログインは失敗しました。
    [ISQL]ERROR: Could not SQLConnect

    となります。

    2006年6月21日 0:46
  • どちらにしてもそのエラーメッセージの意味を調査してみませんか?
    2006年6月21日 4:58
  • このやり方だと問題の切り分けには不十分です。

    SQL Server のマシン上で、指定したユーザで接続できるか確認することが重要です。
    それで接続できるのであれば、SQL Server は悪くないです。
    接続できないのであれば、SQL Server の設定(ユーザの権利が足りない)が悪いです。

    2006年6月21日 14:08
  • おがわさま
    たびたびありがとうございます。

    SQLServerのインストールされているマシンのコントロールパネルからのODBC接続は可能でございました。
    Windows上の別のマシンからのODBC接続も可能でございました。

    2006年6月26日 1:39
  • 中さま

    そうですね。エラーメッセージをもう少しつっこんでみようかとおもいます。
    2006年6月26日 1:41
  • 問題の切り分けとして、TSQL利用を試してみました。

    tsql -S mssql -U fuga -P PASSWD_fuga
    tsql -H ***.***.***.*** -p 1433 -U fuga -P PASSWD_fuga

    tsql -S mssql -U hoge -P PASSWD_hoge
    tsql -H ***.***.***.*** -p 1433 -U hoge -P PASSWD_hoge

    ともに接続できました。
    ということはiSQLの不都合(不具合?)になるのでしょうか?

    2006年6月27日 1:38
  • SQLサーバ、freetds.conf、odbc.iniなどいろいろ設定を変更した結果最終的には無事ODBC経由で接続できました。
    お騒がせいたしました。

    2006年6月29日 1:33