[リストへもどる]
一括表示

投稿時間:2002/10/08(Tue) 03:58
投稿者名:A.T
Eメール:
URL :
タイトル:
SQLServerへの接続
いつも参考にさせていただいてます。

早速質問ですがWin2000でVB6.0SP3+SQLServer7.0での開発環境で作業しています。
ADOでWeb上のSQLServerへ接続しているのですがあるマシンはつながるのですが
あるマシンだとつながりません・・・これは何か原因はあるのでしょうか?
エラーメッセージはSQLServerが見つかりませんと出てきます。
環境としては両方ともWin2000です。DBへの接続はADO2.1を使用しています。

ご助力お願いします。

投稿時間:2002/10/08(Tue) 19:35
投稿者名:A221
Eメール:
URL :
タイトル:
Re: SQLServerへの接続
> 早速質問ですがWin2000でVB6.0SP3+SQLServer7.0での開発環境で作業しています。
> ADOでWeb上のSQLServerへ接続しているのですがあるマシンはつながるのですが
> あるマシンだとつながりません・・・これは何か原因はあるのでしょうか?
> エラーメッセージはSQLServerが見つかりませんと出てきます。

つながらないのは、まず、

1.ハード的に接続されない場合
LAN環境が故障?
2.ファームが通らない場合
Webの場合、ルーター、ファイアーウォール等で切れる。
3.ソフト的に通らない場合
ConnectionStringが間違ってるとか、SQLサーバーの接続プロトコルが違う。

ぐらいが考えられます。詳細がないとこれ以上は残念ながら。

投稿時間:2002/10/08(Tue) 21:43
投稿者名:A.T
Eメール:
URL :
タイトル:
Re^2: SQLServerへの接続
> 1.ハード的に接続されない場合
> LAN環境が故障?
> 2.ファームが通らない場合
> Webの場合、ルーター、ファイアーウォール等で切れる。
> 3.ソフト的に通らない場合
> ConnectionStringが間違ってるとか、SQLサーバーの接続プロトコルが違う。
>
> ぐらいが考えられます。詳細がないとこれ以上は残念ながら。

返答ありがとうございます。
1に関してですが同じLAN内でつながるマシンとつながらないマシンがあるので
まず無いと思います。
2に関しても同じ環境の元やっているので考えにくいです。

'データベースへの接続
Public Function dbConectOn()
 Dim Connect         As New ADODB.Connection
 Dim Command         As New ADODB.Command
      
 ' 接続を確立する
  Connect.Open "Provider=SQLOLEDB;Data Source=サーバーのIP;Initial Catalog=データベース名;", "ID", "PASSWORD"

で、という記述で接続しています。
ConnectionStringとはOpen後の記述のことですよね?

あまり詳しくなく申し訳ありませんが宜しくお願いします。

投稿時間:2002/10/08(Tue) 23:23
投稿者名:A221
Eメール:
URL :
タイトル:
Re^3: SQLServerへの接続
> 1に関してですが同じLAN内でつながるマシンとつながらないマシンがあるので

各クライアントのコンソール(コマンドプロンプト)からPingコマンドで
サーバーIPを確認したときつながっていますか?

Ex.
Ping 192.168.0.1
......
Reply from 192.168.0.2 bytes=32 time < 10ms TTL=128

すべてPingがつながるのであれば、私のわかる範囲ではお手上げです。

ちなみに、IPではなく名前付パイプでの接続にしたほうがよいと思いますよ。
以下抜粋--------------------------------------------------------------------
特に指定しない限り、Windows NT が動作するコンピュータ上の SQL Server は、
サーバー名前付きパイプ、TCP/IP ソケット、およびマルチプロトコル
Net-Library で待ち合わせます。

Windows 95/98 が動作するコンピュータ上の SQL Server は TCP/IP ソケットと
マルチプロトコル Net-Library のサーバーで待ち合わせます。

Windows 95/98 が動作しているコンピュータにおけるローカル
(クライアントとサーバーが同じコンピュータ上にある) 接続の場合、
SQL Server はサーバー共有メモリ Net-Library で待ち合わせます。

>  ' 接続を確立する
>   Connect.Open "Provider=SQLOLEDB;Data Source=サーバーのIP;Initial Catalog=データベース名;", "ID", "PASSWORD"
>ConnectionStringとはOpen後の記述のことですよね?

connection.Open ConnectionString, UserID, Password, OpenOptions
この第一引数のことです。

投稿時間:2002/10/09(Wed) 16:32
投稿者名:A.T
Eメール:
URL :
タイトル:
Re^4: SQLServerへの接続
> 各クライアントのコンソール(コマンドプロンプト)からPingコマンドで
> サーバーIPを確認したときつながっていますか?
>
> Ex.
> Ping 192.168.0.1
> ......
> Reply from 192.168.0.2 bytes=32 time < 10ms TTL=128
>
> すべてPingがつながるのであれば、私のわかる範囲ではお手上げです。

DBサーバーでIP制限をかけているためなのかpingは通りませんでした。

> ちなみに、IPではなく名前付パイプでの接続にしたほうがよいと思いますよ。
> 以下抜粋--------------------------------------------------------------------
> 特に指定しない限り、Windows NT が動作するコンピュータ上の SQL Server は、
> サーバー名前付きパイプ、TCP/IP ソケット、およびマルチプロトコル
>  Net-Library で待ち合わせます。
>
> Windows 95/98 が動作するコンピュータ上の SQL Server は TCP/IP ソケットと
> マルチプロトコル Net-Library のサーバーで待ち合わせます。
>
> Windows 95/98 が動作しているコンピュータにおけるローカル
>  (クライアントとサーバーが同じコンピュータ上にある) 接続の場合、
> SQL Server はサーバー共有メモリ Net-Library で待ち合わせます。
>
> >  ' 接続を確立する
> >   Connect.Open "Provider=SQLOLEDB;Data Source=サーバーのIP;Initial Catalog=データベース名;", "ID", "PASSWORD"
> >ConnectionStringとはOpen後の記述のことですよね?
>
> connection.Open ConnectionString, UserID, Password, OpenOptions
> この第一引数のことです。

初心者的で申し訳ないのですが名前付パイプでの接続方法がわからないのですが
何か参考になるページなどありますでしょうか。
すみませんが宜しくお願いします。

投稿時間:2002/10/09(Wed) 20:29
投稿者名:A221
Eメール:
URL :
タイトル:
Re^5: SQLServerへの接続
SQLServerセットアップCD内のBooksOnlineで引くと詳細に書いてあります。
長いので少し省略しつつ抜粋です。
--------------------------------------------------------------------
名前付きパイプによるクライアント接続

ここでは、IPC メカニズムとして名前付きパイプを使用しているときに、
ネットワーク接続をテストする方法を説明します。

名前付きパイプ接続を検査するには

クライアント ワークステーションのオペレーティング システムのコマンド プロンプトで、
以下のように入力します。
net view \\servername

net view を使用するとき、servername には接続先のサーバー名を指定します。

たとえば、名前付きパイプ クライアントとサーバー名 \\SEATTLE1 の間の接続を検査するには、
クライアントで以下のように入力します。

net view \\SEATTLE1

接続がオープンされた場合は、出力は以下のようになります。

\\SEATTLE1 の共有資源
SQL Server

共有名          タイプ          使用      コメント
----------------------------------------------------
PUBLIC         Disk                     Public Files

コマンドは正常に終了しました。


サーバーの名前付きパイプへの接続を検査するには

コマンド プロンプトから以下のように入力します。
net use \\servername\IPC$

net use を使用するとき、servername には接続先のサーバー名を指定します。

たとえは、次のように指定します。

net use \\SEATTLE1\IPC$

コマンドは正常に終了しました。

クライアント ワークステーションとサーバー間の接続がオープンされたにもかかわらず
Microsoft&reg; SQL Server&#8482; に接続できない場合は、makepipe および readpipe
ユーティリティを使用して、ネットワークおよびローカルの名前付きパイプをテストします。

SQL Server には、ネットワーク上の名前付きパイプの整合性をテストを支援する目的で
設計されたユーティリティが 2 つあります。makepipe および readpipe ユーティリティは、
クライアントとサーバーの構成要素の両方をインストールするときに、
同時にインストールされます。
これらのユーティリティには、実行対象のオペレーティング システムによって
異なるバージョンが存在します。
makepipe は、Microsoft&reg; Windows NT&reg; 上で動作します。
readpipe は、Windows NT、Microsoft&reg; Windows&reg;、および MS-DOS&reg; 上で動作します。
テストするオペレーティング システムに適したバージョンを使用してください。
Windows で動作するバージョンは readpipe という名前です。
SQL Server ツールをインストールすると、readpipe は \Msqql7\Binn ディレクトリに格納されます。readpipe 用のアイコンは作成されません。

ネットワークの名前付きパイプ サービスの一貫性をテストするには

サーバーのオペレーティング システムのコマンド プロンプトで、以下のように入力します。
makepipe

makepipe ユーティリティは、以下の情報を返します。

Making PIPE:\\.\pipe\abc
read to write delay (seconds):0
Waiting for Client to Connect...
SQL Server は、クライアントが接続されるのを待ちます。

クライアント ワークステーションのオペレーティング システムのコマンド プロンプトで、
以下のように入力します。
readpipe /Sserver_name /Dstring

readpipe を使用するとき、server_name は makepipe が起動された SQL Server の
ネットワーク サーバー名です。string はテスト文字列です。
文字列にスペースを含む場合は、文字列全体を二重引用符で囲む必要があります。
/S とサーバー名の間、および /D と文字列の間にスペースは含まれません。

たとえば、MYSERVER という名前の SQL Server システムに接続するには、
以下のいずれか 1 つを入力します。

readpipe /Smyserver /Dhello
readpipe /Smyserver /D"hello there"
readpipe /Smyserver /D'hello there'

最初の 2 つの readpipe ステートメントで指定された文字列は同じように扱われます。

ネットワークの名前付きパイプ接続が確立されると、クライアント ワークステーションは
以下の情報を返します。以下の情報は、それぞれ上記の readpipe コマンドに対応しています。

SvrName:\\myserver
PIPE :\\myserver\pipe\abc
DATA :hello
Data Sent: 1 : hello
Data Read: 1 : hello
SvrName:\\myserver
PIPE :\\myserver\pipe\abc
DATA :hello there
Data Sent: 1 :hello there
Data Read: 1 :hello there
SvrName:\\myserver
PIPE :\\myserver\pipe\abc
DATA :hello
Data Sent: 1 : 'hello
Data Read: 1 : 'hello

ネットワークの名前付きパイプ接続が確立できた場合は、makepipe ユーティリティからは、
以下のような情報が返されます。

Waiting for Client to Connect...
Waiting for client to send... 1
Data Read:
hello
Waiting for client to send... 2
Pipe closed
Waiting for Client to Connect...
Waiting for client to send... 1
Data Read:
hello there
Waiting for client to send... 2
Pipe closed
Waiting for Client to Connect...
Waiting for client to send... 1
Data Read:
'hello
Waiting for client to send... 2
Pipe closed
Waiting for Client to Connect...

この時点で、SQL Server はクライアント接続を待ちます。
readpipe ユーティリティを別のワークステーションから実行できます。

テストが完了したときは、makepipe ユーティリティを実行しているサーバーで、
Ctrl + Break キーまたは Ctrl + C キーを押します。
テスト結果が手順 2 と異なる場合は、ネットワーク上で名前付きパイプ接続を使用できません。
IPC メカニズムとして名前付きパイプ接続を使用する場合は、
名前付きパイプが利用できるようになるまで、クライアントは SQL Server に接続できません。
これらのユーティリティは、名前付きパイプを開き、使用しようとします。
名前付きパイプ接続は実行しません。

投稿時間:2002/10/09(Wed) 20:39
投稿者名:A221
Eメール:
URL :
タイトル:
Re^5: 名前付パイプへの接続
サーバー側でSQLServer7.0 → サーバーネットワークユーティリティを実行します。

全般のタブに「名前付のパイプ」があれば特に設定する必要はありません。
そこに書いてある「名前付のパイプ」のパラメータをADOのConnectionStringの
DataSourceに書くだけで接続できるはずです。

なければ「追加」から追加してやればよいでしょう。

投稿時間:2002/10/10(Thu) 19:10
投稿者名:A.T
Eメール:
URL :
タイトル:
Re^6: 名前付パイプへの接続
> サーバー側でSQLServer7.0 → サーバーネットワークユーティリティを実行します。
>
> 全般のタブに「名前付のパイプ」があれば特に設定する必要はありません。
> そこに書いてある「名前付のパイプ」のパラメータをADOのConnectionStringの
> DataSourceに書くだけで接続できるはずです。
>
> なければ「追加」から追加してやればよいでしょう。
サーバー管理側に確認取ったところセキュリティーや制限をかけているために
「名前付のパイプ」に関しては無効にされているそうです。

1つ気になるのですが同じ環境のマシンでおなじLAN内で接続テストした場合でも
接続するマシンと接続しないマシンがあります。
これは何か他に原因があるのでしょうか?

すみませんが宜しくお願いします。

投稿時間:2002/10/11(Fri) 01:14
投稿者名:A221
Eメール:
URL :
タイトル:
Re^7: 名前付パイプへの接続
> サーバー管理側に確認取ったところセキュリティーや制限をかけているために
> 「名前付のパイプ」に関しては無効にされているそうです。

う。それはホントに困りました。

> 1つ気になるのですが同じ環境のマシンでおなじLAN内で接続テストした場合でも
> 接続するマシンと接続しないマシンがあります。
> これは何か他に原因があるのでしょうか?

Pingが通るか通らないかで話が変ってきます。
接続しないマシンはPingも通らないのですか?

各、接続するマシンと接続しないマシンのOS(Version等)、IP、LAN的な接続位置
(DHCPルータ等との関係)を詳細に洗いなおして接続できない理由を探すしか
なさそうです。

> すみませんが宜しくお願いします。

あまり、お力になれずすみません。

投稿時間:2002/10/11(Fri) 23:10
投稿者名:A.T
Eメール:
URL :
タイトル:
Re^8: 名前付パイプへの接続
> う。それはホントに困りました。
ほんとに困っちゃいました・・・(^^;

> Pingが通るか通らないかで話が変ってきます。
> 接続しないマシンはPingも通らないのですか?
Pingは接続できるマシンも通らないのでこれまた制限がかけられてるものと見られます・・
なんだかなぁ〜って感じです・・

> 各、接続するマシンと接続しないマシンのOS(Version等)、IP、LAN的な接続位置
> (DHCPルータ等との関係)を詳細に洗いなおして接続できない理由を探すしか
> なさそうです。
ん〜その辺もいろいろ見てみましたがなんとも・・・
ADOでの接続をやめた方がいいんでしょうか・・

> あまり、お力になれずすみません。
いえいえ、いろいろアドバイスありがとうございます。