次の方法で共有


グローバルIPを指定してSQL Serverに接続するには

質問

2011年8月30日火曜日 2:40

グローバルIPをもつサーバーにSQL ServerとManagement Studioをインストールしました。
混合モードでsaでManagement Studioで接続しました。

 

次にこのサーバー自身がもつグルーバルアドレスで接続を試みます。

すると失敗します。次の投稿に進みます。

すべての返信 (12)

2011年8月30日火曜日 4:00 ✅回答済み

インスタンス名が SQL Express なので Express edition だと思いますが、tcp/ip のプロパティ値は標準ではない状態ですね?

単純に外部から tcp/ip でデフォルトインスタンスとして自由に接続したいのであれば、IP1 ~ IPn の「アクティブ」をすべて「いいえ」にして、IPALL のみ 1433 の固定ポートとすればよいかと思います。


2011年8月30日火曜日 4:57 ✅回答済み

localhost\SQLExpress

で接続できます。

127.0.0.1\SQLExpress

では接続できません。

TCP/IPが有効になっているのに、127.0.0.1\SQLExpress で接続できないのは、おそらくSQL Browserが起動していないからだと思われます.

名前付きインスタンスの場合(SQLExpressも名前付きインスタンス)、ポートは固定されず、起動の度にポートが変わります。これに対応して現在のポートに正しく接続させる役目を担っているのがSQL Browserです。
ファイアウォールの関係でポートを固定されたいのであれば、K.Takaokaさんが書かれている方法で固定します。この場合、SQL Browserは必要ありません。

 

★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/


2011年8月30日火曜日 2:44

SQL Server Configuration Managerでは

このようにTCP接続が有効になっています。

また全く同じ設定でLAN内の環境でやりましたがプライベートアドレス192.168.0.101では接続できました。


2011年8月30日火曜日 2:52

http://www.cman.jp/network/support/port.html

によりポートチェックしてみました。

ポート80にはアクセスできました。

SQL Server標準の1433のポートを開け実行してみましたが

ホスト:x.x.x.x ポート:1433 に到達できませんでした。

ポートが原因かもしれないと思います。グローバルIPで接続する方法をご指南いただきたいです。

 


2011年8月30日火曜日 3:35

TCP

TCP/IPのプロパティ設定です

この状態ですが

localhost\SQLExpress

で接続できます。

127.0.0.1\SQLExpress

では接続できません。

 


2011年8月30日火曜日 3:59

とりあえず赤字でIPアドレスが出ていますが大丈夫ですか?

 

★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/


2011年8月30日火曜日 5:08

普通にMSDNの

データベース エンジン アクセスを有効にするための Windows ファイアウォールの構成方法

特定の TCP ポートで受信待ちするようにサーバーを構成する方法 (SQL Server Configuration Manager)

は読んでいますか?

Windowsファイアウォールの設定は即時反映されますが、SQL Serverの設定はリンク先にもありますが、設定反映のために再起動が必要です。

ところで、グローバルIPアドレスで世界中からSQL Server接続を受け付ける必要があるのですか? とりあえず24時間攻撃を受け続けますが大丈夫ですか?

あとはIPアドレスから会社名がわかってしまいますが大丈夫ですか?


2011年8月30日火曜日 6:12

よろしくなかったです。ありがとうございました。

あと毎時ではないですが世界中から受け付ける必要があります。

予算と納期と仕様でこのようになっています。


2011年8月30日火曜日 6:19

ありがとうございました。IPAllでないところを1433にしていたからできませんでした。


2011年8月30日火曜日 7:27

まずは外部からManagement studioで接続することはできました。

サーバー上でサーバー自身のSQL Serverに接続するときはx.x.x.x\SQLExpress

で接続できます。

外部からだとx.x.x.xで接続でき、x.x.x.x\SQLExpressだと

 

タイトル: サーバーへの接続


x.x.x.x\SQLExpress に接続できません。


ADDITIONAL INFORMATION:

SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: SQL ネットワーク インターフェイス, error: 26 - 指定されたサーバーまたはインスタンスの位置を特定しているときにエラーが発生しました) (Microsoft SQL Server、エラー: -1)

ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft;SQL;Server&EvtSrc=MSSQLServer&EvtID=-1&LinkId=20476 をクリック


BUTTONS:

OK

 

と出てしまいます。インスタンス名は指定できないのでしょうか、

最終的な目標はAccessDataProject(ADP)で接続することです。

Management Studioのようにインスタンスを指定せずに接続先をx.x.x.xとしていすると

 

Microsoft データ リンク エラー

プロバイダーの初期化中にエラーが発生したため、接続のテストに失敗しました。[DBNETLIB][ConnectionOpen (Invalid Instance()).]接続が正しくありません。

OK 

と出てしまうからこれを解決したいのです。

とりあえずSQL Server Browserについて見なおしてみたいと思います。


2011年8月30日火曜日 7:42

うまくいきました。

trapemiyaさんの話に聞いたSQL Server Browserのサービスが無効になっていて、有効にしたらインスタンス名が指定できるようになりました。

ありがとうございました。


2011年8月30日火曜日 9:03

蛇足ですが、、、

特に 1433 のままでも問題ないのですが、ブラウザサービスを使用する場合は動的ポートにしておくことができます。

一般的に、ポート番号を指定してのサービスに接続する場合にはインスタンス名ではなくポート番号を指定して接続します。この場合は、"x.x.x.x,1433" という接続文字列を指定することになります。

同様に、名前を指定してのサービスに接続する場合には、ブラウザサービスを経由します。この場合、ポート番号は何番でもかまいません。(ブラウザサービスが、何番のポートに接続すればよいか教えてくれます。このため、1433 に固定せず動的ポートを利用できます。) 名前を指定してインスタンスに接続する場合は、"x.x.x.x\name" と指定することになります。

どちらにも「既定のポート」「既定のインスタンス」があり、接続文字列として "x.x.x.x" とサーバだけを指定すると、それぞれ "x.x.x.x,1433" と "x.x.x.x\SQLSERVER" が指定されたとみなされます。