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

  • 質問

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

     

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

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

    2011年8月30日 2:40

回答

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

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

    • 回答としてマーク 和和和 2011年8月30日 7:23
    2011年8月30日 4:00
  • 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日 7:42
    2011年8月30日 4:57

すべての返信

  • SQL Server Configuration Managerでは
    このようにTCP接続が有効になっています。
    また全く同じ設定でLAN内の環境でやりましたがプライベートアドレス192.168.0.101では接続できました。
    2011年8月30日 2:44
  • http://www.cman.jp/network/support/port.html

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

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

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

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

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

     


    • 編集済み 和和和 2011年8月30日 6:12
    2011年8月30日 2:52
  • TCP

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

    この状態ですが

    localhost\SQLExpress

    で接続できます。

    127.0.0.1\SQLExpress

    では接続できません。

     

    2011年8月30日 3:35
  • とりあえず赤字でIPアドレスが出ていますが大丈夫ですか?

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年8月30日 3:59
  • インスタンス名が SQL Express なので Express edition だと思いますが、tcp/ip のプロパティ値は標準ではない状態ですね?

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

    • 回答としてマーク 和和和 2011年8月30日 7:23
    2011年8月30日 4:00
  • 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日 7:42
    2011年8月30日 4:57
  • 普通にMSDNの

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

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

    は読んでいますか?

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

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

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

    2011年8月30日 5:08
  • よろしくなかったです。ありがとうございました。

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

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

    2011年8月30日 6:12
  • ありがとうございました。IPAllでないところを1433にしていたからできませんでした。
    2011年8月30日 6:19
  • まずは外部から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:27
  • うまくいきました。

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

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

    2011年8月30日 7:42
  • 蛇足ですが、、、

    特に 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" が指定されたとみなされます。

    2011年8月30日 9:03