web-dev-qa-db-ja.com

SQL Serverは起動していますが、どのポートでもリッスンしていません

SQL Server 2012を新しくインストールしました。データベースはまだ作成されていません。そして、sa/passwordでManagement Studioを開くことができます。 Binn\sqlservr.exeがサービスとして開始され、サービスリストで開始されたことがわかります。ただし、以下のように確認したところ、それは1433ポートをリッスンしておらず、デフォルトでどのポートもリッスンしていませんでした。

tasklist|find /I "sql"

私は得ました:

sqlservr.exe                  5668 Services                   0     40,112 K

5668はPIDだと思います。そして、PID = "5668"を取得するには、どのポートをリッスンしていますか。

netstat -ano | find /I "5668"

でも、空白以外は何もありませんでした。一方、このサイトで投稿を検索した後、SQL Serverの構成を再確認しました。スタート->すべてのプログラム-> Microsoft SQL Server 2012->構成ツール-> SQL Server構成マネージャー-> SQL Server SQL Native Client 11.0構成->クライアントプロトコル-> TCP/IP->デフォルトポート1433。SQLServer(MyInstanceName)、SQL Server Agent(MyInstanceName)、SQL Server Browserの3つのサービスがあります。最後の2つは停止されます。

SQL Server構成マネージャー-> SQL Serverネットワーク構成-> MyInstanceNameのプロトコル-> TCP/IPはデフォルトで無効になっています。有効にしてサービスを再起動し、netstat -anoを繰り返します。 find/I "newPIDNum"コマンドで見つけた

TCP    0.0.0.0:52395          0.0.0.0:0              LISTENING  5668(newPIDNum)   

なぜ1433ではなく52395なのですか?そして、Windowsを使用してDSNを作成できませんでしたODBCエラーを返すデータソース管理者:指定されたSQLサーバーが見つかりません。助けてくれませんか?ありがとう。

9
anaconda_wly

SQLサーバーがポート1433でTCP接続をリッスンしたのは次のとおりです...

  1. 構成ツール/ SQL Server構成マネージャー
  2. sQL Serverネットワーク構成でインスタンス名をクリックします。
  3. TCP通信を有効にする
  4. TCP通信エントリを右クリックし、Propertiesを選択します
  5. [IPアドレス]タブをクリックします
  6. すべての非VMnet IPアドレスを有効にし、Portエントリに「IPAll」の1433と入力します。
  7. [SQL Serverサービス]タブでSQL Serverを再起動します
  8. netstat -anで設定を確認してください:

    C:\>netstat -an | find "1433"
      TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING
      TCP    [::]:1433              [::]:0                 LISTENING
    
13
eel ghEEz

なぜ1433ではなく52395なのか

名前付きインスタンスは動的ポートで待機します。 Sql Server Browser Service がクライアントに実際のポートを通知する仕事です。 SQLブラウザーはUDP 1434をリッスンし、「インスタンス "foo"のリッスンポートは何ですか?」という形式の質問に答えます。 SQL Server Browserサービスは、TCPと名前付きパイププロトコルの両方で必要です。クライアントは、SQL Server Browserを透過的に使用します。特別な構成は必要ありません。接続文字列(またはODBC DSN)、クライアントライブラリは、最初にSQL Server Browserサービスに接続する必要があることを認識しています。

SQL Server(MyInstanceName)、SQL Server Agent(MyInstanceName)、SQL Server Browserの3つのサービスがあります。最後の2つは停止されます

明らかに、SQL Server Browserがその仕事をするためには、それを開始する必要があります。それを起動し、起動タイプを自動に変更します。

補足として、よく使用される代替構成は、名前付きインスタンスに静的ポートを使用し、接続文字列(tcp:<hostname>:<port>)。これには、SQL Server Browserを使用できないという利点がありますが、クライアントの慎重なメンテナンスが必要です。リスニングポートを変更するには、すべてのクライアント、すべてのマシン、すべての場所で調整を変更する必要があり、通常は大きな苦痛です。代わりに、SQL Server Browserに依存することをお勧めします。

13
Remus Rusanu

私はまだコメントできません(あまり活発ではないため、評判は低いです):しかし、上記のようにWindowsファイアウォールを無効にすることは、考えられる最悪の答えです。正しい例は次のとおりです。「受信」でファイアウォールルールを作成し、必要なローカルIP(またはすべて)でポート1433通信を許可します。また、そのSQL Serverへの接続を許可するリモートIPを設定することもお勧めします。

1
JouMxyzptlk

ファイアウォール-それらの3

Windowsの最近のバージョンに精通していない人(XP以降のバージョンには慣れておらず、SQL ServerをWindows 10にインストールしようとしていました):

  • ファイアウォールは3つの別々の場所で無効にする必要があります(つまり、3つの異なるプロファイル用)。

最初に表示されるもの(ドメインプロファイル)に対してのみ行う場合でも、ポート80(IIS)に接続できるのに1433(SQL Server)には接続できないのはなぜか疑問に思われることになります。

enter image description here

1