• ベストアンサー

VB + SQL + TCP について

VisualBasicの質問です。 データベースを使用してソフトを開発しております。 ソフトとは管理ソフトで外部からの顧客情報などを管理しようと思っております。外部からの顧客情報なのでネットワークをしようします。 データベースにはSQL Serverを使用しております。 内部的なアクセスで、サーバ名を入れる又はIPアドレスで指定して接続することができたのですが、外部からのアクセスでIPアドレスを指定しても接続することができません。下記はローカル内での接続に使用したコネクションです。 cn.ConnectionString = "Provider=SQLOLEDB;Network address=192.168.0.2;" & "initial catalog=○○;User ID= sa;Password=''" '192.168.0.2はサーバのIPアドレス '○○はデータベース名 'saはID 'passはないものとしております。 理由として考えられるTCPのポートを空けるのかと思うのですがどなたかご存知の方ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

整理します。 (1) ローカルなLANでは cn.ConnectionString = "Provider=SQLOLEDB;Network address=192.168.0.2;" & "initial catalog=○○;User ID= sa;Password=''" 外部からは cn.ConnectionString = "Provider=SQLOLEDB;Network address=《グローバルなIP》;" & "initial catalog=○○;User ID= sa;Password=''" というように設定済み (ちなみにローカルLANから外部設定のコネクションストリングを使用しても、接続不可能ですので注意してくださいね) (2) 「ルータのNAPT」の設定を行った 1433に穴→192.168.0.2 (※「TCP」も「UDP」も開けておいた方がいいみたいです。) これだけで基本は行くのですが、それでも外部からの接続がダメというのであれば、要因は別にありそうですね。 OSはXPですか?Pro?Home?サービスパックは? 全ての環境情報を開示してください。 もしかしてネットワークアダプタ設定で、Internet経由の接続を拒否してませんよね? XPSp2でファイアウォールが設定されているとか? もしwebサーバの構築方法を知っているのであれば、TCP80番ポートに穴を開けて、  ホームページにアクセスできる  → SQL-Server関連の問題  ホームページにアクセスできない → OSを含めたLan設定の問題 と出来るのですが、、、

teas
質問者

補足

ご回答ありがとうございます。 上記(1)、(2)とも設定は大丈夫です。 環境情報です。 WebServer OS:Windows2000Server > もしwebサーバの構築方法を知っているのであれば、TCP80番ポートに穴を開けてホームページにアクセスできる できております。Webとして80ポートFTPとして20,21ポートなどで設定をしております。 SQL Serverの設定はきちんと1433のTCPポートに設定されております。 もう一度設定を確認して実行してみます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

別の考えられる要因として、IPのセギュメントの差が問題なのかなぁ? 一応以下の設定もしておいてみて、実験していただけませんでしょうか? Enterprise Managerを立ち上げ「サーバのプロパティ」 全般TAB  「SQL Server を自動起動(V)」をチェック  他は未チェックでも化  「ネットワーク設定(N)」ボタンより    「Winsock プロキシを有効にする(W)」をチェック    Winsock プロキシアドレス(S)「192.168.0.2」    Winsock プロキシポート(X)「5555」←未使用のポート番号 ルータ設定NAPT(マスカレード)にて「5555」ポートを穴

teas
質問者

お礼

ご返答ありがとうございました。 きちんと接続できました。 原因はIPの指定間違いでした。 OCNのIP8プランを使用していまして、Internet接続IPとサーバ割り当てIPとの違いから ルータでの設定IPとVBでの指定IPに違いがありました。 ご返答していただいた皆様にご迷惑をおかけしましてまことに申し訳ありませんでした。

すると、全ての回答が全文表示されます。
回答No.1

外部=インターネットを通しているということですよね? ↓このアドレスにアクセスしてみてください。 http://ddo.jp/ 外から見たIPアドレスがわかります。 外からは、これに置き換える必要があります。 もしルータを使用しているのであれば、ルータの設定を要します。 (俗に"ポートに穴を開ける"作業) SQLサーバの基本のポートは1433なので、ルータに1433での接続要求は192.168.0.2へつなぐ設定をしなければいけません。 (1433でなければ、それに応じて変更) ルータの設定でいづれかがあると思います。(ルータのメーカによって異なります。)  ※IPマスカレード  ※IPマスカレードテーブル  ※NAPT  ※IPアドレス変換  ※IPアドレス変換テーブル そこで[TCP]の[1433]は[192.168.0.2]への変換を行うという設定が必要になります。

teas
質問者

補足

すみません。追記です。 上記のルータでの設定はしました。 SQLでの設定もTCP/IPポートは1433でした。それで実行すると、SQL Serverが存在しないか、アクセスが拒否されました。と表示されます。ローカルでだとID,PWは通っているのでアクセスが拒否されることはないと思うのですが、何かほかに不足している内容などはないでしょうか? 参考:実行時エラー '-2147467259 (80004005)': [DBNETLIB][ConnectionOpen (Connect()).]SQL Serverが存在しないか、アクセスが拒否されました。 上記はエラーの内容です。。よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A