Bagaimana menemukan port yang menjalankan SQL Server?

94

Ya saya membaca ini Bagaimana menemukan port untuk MS SQL Server 2008?

tidak beruntung.

telnet 1433

koneksi kembali gagal, jadi saya harus menentukan port lain.

Saya mencoba menggunakan

netstat -abn

tapi saya tidak melihat sqlservr.exe atau yang serupa di daftar ini.

Mengapa begitu sulit menemukan port itu? : /

keram
sumber
Apakah Anda memeriksa apakah Layanan Server Sql sedang berjalan?
Pilgerstorfer Franz

Jawaban:

76

sangat sederhana. catat PID sqlsrvr.exe dari taskmanager lalu jalankan perintah ini:

netstat -ano | findstr *PID*

itu akan menunjukkan koneksi TCP dan UDP dari server SQL Anda (termasuk port) standar 1433 untuk TCP dan 1434 untuk UDP

contoh: masukkan deskripsi gambar di sini

mantas mileris
sumber
3
Ini bekerja untuk saya "secara terbalik": diperlukan untuk menemukan nomor port (non-default) dari mesin jarak jauh yang saya sambungkan ke dalam SSMS.
leqid
57

Ini adalah salah satu yang berhasil untuk saya:

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL 
Stefan Steiger
sumber
39

Jika Anda dapat memulai Manajer Konfigurasi Server Sql> Konfigurasi Jaringan Server SQL> Contoh Anda> TCP / IP> Properti

masukkan deskripsi gambar di sini

abedurftig
sumber
8

Jika Anda telah menjalankan "netstat -a -b -n" (dari prompt perintah yang ditinggikan) dan Anda tidak melihat "sqlservr.exe" sama sekali, maka layanan SQL Server Anda tidak berjalan atau perpustakaan jaringan TCP / IP-nya tidak berfungsi cacat.

Jalankan Manajer Konfigurasi Server SQL (Mulai | Semua Program | Microsoft SQL Server 2008 | Alat Konfigurasi).

Arahkan ke Layanan SQL Server. Di panel sebelah kanan, cari SQL Server (). Apakah itu dihentikan? Jika demikian, mulailah.

Arahkan ke Konfigurasi Jaringan SQL Server (atau Konfigurasi Jaringan SQL Server (32-bit) yang sesuai) lalu Protokol untuk. Di panel sebelah kanan, cari "TCP / IP". Apakah itu dinonaktifkan? Jika demikian, aktifkan, lalu mulai ulang layanan SQL Server.

Perhatikan bahwa ID Instance dia akan menjadi MSSQLSERVER untuk instance default.

Harap perhatikan juga bahwa Anda tidak harus mengaktifkan pustaka jaringan TCP / IP untuk menghubungkan klien ke layanan. Klien juga dapat menyambung melalui perpustakaan jaringan Memori Bersama (jika klien pada mesin yang sama) atau perpustakaan jaringan Pipa Bernama.

Greenstone Walker
sumber
3

Mungkin tidak menggunakan TCP / IP

Lihat Manajer Konfigurasi Server SQL untuk melihat protokol apa yang digunakannya.

podiluska
sumber
Konfigurasi SQL Native Client? TCP / IP Diaktifkan. Tetapi port default disetel ke 1433: /
keram
@ Keram Tidak - itu untuk klien. Anda ingin menggunakan konfigurasi server.
podiluska
di mana saya dapat menemukan konfigurasi itu?
keram
2

Di perusahaan kami, saya tidak memiliki akses ke MSSQL Server, jadi saya tidak dapat mengakses tabel sistem.

Apa yang berhasil untuk saya adalah:

  1. menangkap lalu lintas jaringan Wireshark(jalankan sebagai Administrator, pilih Antarmuka Jaringan), saat membuka koneksi ke server.
  2. Temukan alamat ip dengan ping
  3. filter dengan ip.dst == x.x.x.x

Porta ditampilkan di kolom infodalam formatsrc.port -> dst.port

fbehrens.dll
sumber
2

Ini adalah skrip lain yang saya gunakan:

-- Find Database Port script by Jim Pierce  09/05/2018

USE [master]
GO

DECLARE @DynamicportNo NVARCHAR(10);
DECLARE @StaticportNo NVARCHAR(10);
DECLARE @ConnectionportNo INT;

-- Look at the port for the current connection
SELECT @ConnectionportNo = [local_tcp_port]
 FROM sys.dm_exec_connections
    WHERE session_id = @@spid;

-- Look for the port being used in the server's registry
EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
                        ,@key =
                         'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
                        ,@value_name = 'TcpDynamicPorts'
                        ,@value = @DynamicportNo OUTPUT

EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
                        ,@key =
                         'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
                        ,@value_name = 'TcpPort'
                        ,@value = @StaticportNo OUTPUT

SELECT [PortsUsedByThisConnection] = @ConnectionportNo
      ,[ServerStaticPortNumber] = @StaticportNo
      ,[ServerDynamicPortNumber] = @DynamicportNo
GO
Jim Pierce
sumber
1

Coba aktifkan protokol dengan: Configuration Manger > SQL server Network Configuration > Protocols for MSSQLSERVER > properti TCP / IP

Berry
sumber
1

coba sekali: -

USE master
DECLARE       @portNumber   NVARCHAR(10)
EXEC   xp_instance_regread
@rootkey    = 'HKEY_LOCAL_MACHINE',
@key        =
'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll',
@value_name = 'TcpDynamicPorts',
@value      = @portNumber OUTPUT
SELECT [Port Number] = @portNumber
GO
Krishna Dhakate
sumber
0

Program SQL Server 2000 | MS SQL Server | Utilitas Jaringan Klien | Pilih TCP_IP lalu Properties

Program SQL Server 2005 | SQL Server | Manajer konfigurasi SQL Server | Pilih Protocols for MSSQLSERVER atau pilih Client Protocols dan klik kanan pada TCP / IP

Donna Collins
sumber
0
select * from sys.dm_tcp_listener_states 

Lebih lanjut di sana: https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-tcp-listener-states-transact-sql?view=sql-server -2017

Vladimir Bashutin
sumber
Tolong uraikan jawaban Anda.
Harsh Wardhan
Meskipun tautan ini dapat membantu jawaban Anda atas pertanyaan, Anda dapat meningkatkan jawaban ini dengan mengambil bagian penting dari tautan dan memasukkannya ke dalam jawaban Anda, ini memastikan jawaban Anda masih merupakan jawaban jika tautan diubah atau dihapus :)
WhatsThePoint
0

Pilihan lainnya adalah membaca Registry Windows. Menggunakan PowerShell Anda dapat melakukan sesuatu seperti ini:

#Get SQL instance's Port number using Windows Registry:
$instName = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances[0]
$tcpPort = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instName\MSSQLServer\SuperSocketNetLib\Tcp").TcpPort
Write-Host The SQL Instance:  `"$instName`"  is listening on `"$tcpPort`"  "TcpPort."

masukkan deskripsi gambar di sini Pastikan untuk menjalankan skrip PowerShell ini di Server Host (yang menghosting instans SQL / instalasi SQL Server Anda), yang berarti Anda harus RDP terlebih dahulu ke SQL Server / Box / VM, lalu jalankan kode ini.

HTH

Eddie Kumar
sumber