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サーバーが見つかりません。助けてくれませんか?ありがとう。
SQLサーバーがポート1433でTCP
接続をリッスンしたのは次のとおりです...
TCP
通信を有効にするTCP
通信エントリを右クリックし、Properties
を選択しますPort
エントリに「IPAll」の1433と入力します。netstat -an
で設定を確認してください:
C:\>netstat -an | find "1433"
TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING
TCP [::]:1433 [::]:0 LISTENING
なぜ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に依存することをお勧めします。
私はまだコメントできません(あまり活発ではないため、評判は低いです):しかし、上記のようにWindowsファイアウォールを無効にすることは、考えられる最悪の答えです。正しい例は次のとおりです。「受信」でファイアウォールルールを作成し、必要なローカルIP(またはすべて)でポート1433通信を許可します。また、そのSQL Serverへの接続を許可するリモートIPを設定することもお勧めします。