Date: Thu, 27 Dec 2001 12:04:10 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です
-----Original Message-----
From: Kiyoshi Miyazaki [mailto:who@example.co.jp]
Sent: Thursday, December 27, 2001 9:33 AM
To: who@example.ne.jp
Subject: [ml-msde:00902] Re: SQL Server 2000 への接続について
>ポート1433は正しいのですがだめでした
これはtelnetで、クライアントから1433番に接続できたという意味ですか?
>結局、WindowsXPクライアントのOSをWindows2000に変更しました
>とりあえず結果をご報告させていただきます
時間がなければしょうがないですが、厳しい言い方かもしれませんが、
原因をはっきり調べられた方がよかったと思います。
【参考】
ソケットはご存知ですか?
一般的なネットワークプログラミングでは、ソケットを使います
#!/usr/bin/perl
# *************
# Server
# *************
# Use Socket Package
use Socket;
# Use Other Package
use FileHandle;
# Set Port Number
$port = @ARGV[0];
$port = 44965 unless $port; #default Port
# Make Socket
$proto = getprotobyname('tcp');
socket( S , PF_INET , SOCK_STREAM , $proto)
or die "socket:$!";
# Bind
bind( S , sockaddr_in($port,INADDR_ANY))
or die "bind:$!";
# Listen
listen( S , SOMAXCONN );
# Accept
accept( C , S );
# Do
while( <C> ) {
print $_;
print C $_;
autoflush C 1;
}
# Program End
close( C );
close( S );
exit;
上記のPerlスクリプトは、Linuxで以前に作ったものですが、そのまま
WindowsのActivePerlでも動きます(今動かしてみました)。
ネットワーク間のソケット通信が正常かどうか調べることができます
サーバー側の方で上記スクリプトを動かして(待ち受けポート1433など)、
クライアント側からtelnetでコネクトして、何か文字列を入力して、その
文字列が表示できれば、TCP/IPレイアは正常であることが判明します。
もしコネクトできなければ、クライアント側からの接続用パケットが
出ていない、どこかにフィルタリングされている可能性がある、
などの判断ができます。
TCP/IPレイヤが正常であれば、次に、クライアントは
telnet host_name port
で、接続できるかどうか調べます。
接続できなければ、DNS関係がおかしいので、hostsファイルやDNSサーバー
関係を調べます。
このようにすれば、データベースレイアの直前までの動作チェックができます。
telnet host_name port
によって接続ができれば、あとはデータベースレイアの問題となります。
サーバー側とクライアント側に組み込まれているライブラリのバージョンは
正しいかどうか?
このように調査を進めれば、原因の特定ができたはずです。
#VBにもソケットコントロールがあります
#簡単なサーバー側プログラムも作れますが、原因調査なら Perl が良いので
は?
---------------------------------------------------
(株)日本技術ソフト開発 堀川 明
mailto:who@example.ne.jp
http://www.horikawa.ne.jp/msde/
12月27日(木曜日) 12時01分記
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|