miau's blog?

isql の接続エラー

なぜか isql で localhost 上の SQLServer 2000 に接続できないとかありましたので、そのお話。




エラー内容はこんな感じ。


>isql /S PUBPC /d db01 /U user01 /P pass01
DB-Library: 接続できません。SQL Server が利用できないか、存在しません。 接続で
きません。SQL Server が存在しないかネットワーク アクセスが拒否されています。
Net-Library error 10061: ConnectionOpen (Connect()).

でも、bcp で接続できているので、DB 側の問題ではなさそう。


PUBPC ってのは localhost(DEVPC) の別名。
なので、試しに実ホスト名でアクセスしてみると・・・。


>isql /S DEVPC /d db01 /U user01 /P pass01
1> exit

あっさり接続できたり。
(ちなみに /S オプション省略しても接続できる)


よくあるプロトコル周りの問題かなー?
ということで、調べてみると。

FAQ - SQLDev.Net

明示的にプロトコルを指定できるみたいで。

>isql /S tcp:PUBPC /d db01 /U user01 /P pass01
1> exit

と、「tcp:」を付加してやると、うまく接続できました。


じゃあデフォルトで使用されるプロトコルの設定がおかしいのかな?
ということで、他のプロトコルで同じエラーが出るか調べてみたんだけど・・・

>isql /S tcp:PUBPC,1433 /d db01 /U user01 /P pass01
1> exit

>isql /S tcp:PUBPC,1434 /d db01 /U user01 /P pass01
DB-Library: 接続できません。SQL Server が利用できないか、存在しません。 接続で
きません。SQL Server が存在しないかネットワーク アクセスが拒否されています。
Net-Library error 10061: ConnectionOpen (Connect()).

>isql /S np:PUBPC /d db01 /U user01 /P pass01
DB-Library: 接続できません。SQL Server が利用できないか、存在しません。 接続で
きません。SQL Server が存在しないかネットワーク アクセスが拒否されています。
Net-Library error 52: ConnectionOpen (Connect()).

>isql /S rpc:PUBPC /d db01 /U user01 /P pass01
DB-Library: 接続できません。SQL Server が利用できないか、存在しません。 接続で
きません。SQL Server が存在しないかネットワーク アクセスが拒否されています。
Net-Library error 1703: ConnectionOpen (Connect()).

冒頭に出てるエラーメッセージは TCP での接続に失敗した場合のようで。
よくわからないけど、PUBPC という名前で変なエイリアスが切られてるようです。

cliconfg.exe で設定できるっぽいんですが、こちらからは GUI 環境が使えないので、インフラ担当の方に対応してもらいました。


ちなみに osql でも接続してみたんですけど、

>osql /S PUBPC /d db01 /U user01 /P pass01
[TCP/IP Sockets]SQL Server が存在しないか、アクセスが拒否されました。
[TCP/IP Sockets]ConnectionOpen (Connect()).

>osql /S tcp:PUBPC /d db01 /U user01 /P pass01
1> exit

>osql /S np:PUBPC /d db01 /U user01 /P pass01
[DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました。
[DBNETLIB]ConnectionOpen (Connect()).

>osql /S lpc:PUBPC /d db01 /U user01 /P pass01
1> exit

>osql /S rpc:PUBPC /d db01 /Uband /P pass01
[DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました。
[DBNETLIB]ConnectionOpen (Connect()).

という感じでエラーメッセージが不親切なので、isql のほうを使ったほうがよさげ。


あと、SQLServer で「うまく接続できない」って話はよく聞くけど、まとまってるページが結構あったのでメモメモ。

How to troubleshoot connectivity issues in SQL Server 2000

[MDAC/SQL Server]SQL Server/MSDE の認証における問題解決方法 - おがわみつぎの SQL Server な BLOG
posted at 13:40:29 on 2005-10-27 by miau - Category: Work No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。