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


9

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 ODBCデータソースアドミニストレーターを使用してDSNを作成できませんでした。エラーが返されます。指定されたSQLサーバーが見つかりません。私に何か助けはありますか?ありがとう。


デフォルトのSQL Serverネットワーク構成(2008の場合、2012バージョンは見つかりませんが、違いはないと思います)
Damien_The_Unbeliever

ありがとう。私にとって本当に良い助けです。DSNクレートに関するコメントはありますか?

名前付きインスタンスを使用しているようです(私が知る限り、デフォルトのインスタンスのみが1433でリッスンします)。DSNを作成するときにインスタンス名を含めていますか?
Damien_The_Unbeliever 2013

はい、インストール時にインスタンスの名前を入力しました。DSNを作成するときに、DSN名(任意の名前を入力しました)、接続先のSQLサーバーを入力するように求められました(これはドロップダウン選択ボックスです。 is <.MyInstanceName>)、

MyInstanceNameを含める他の場所はまだありませんでした。次のボタンで認証と<クライアントの構成>を指定できます。<クライアントの構成>では、<サーバーエイリアス>、<サーバー名>を設定し、<ポートを動的に決定>を確認できます。

回答:


14

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

  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
    

1
これは私のために働く唯一の解決策です。他のマニュアルではIPAIIポートについてさえ触れていません。おかげで、あなたは私の日を作った
QkiZ

13

なぜ1433ではなく52395なのか

名前付きインスタンスは動的ポートで待機します。クライアントに実際のポートを通知するSQL Server Browserサービス役割です。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に依存することをお勧めします。


1

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

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

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

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

ここに画像の説明を入力してください


1

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.