Bagaimana menemukan port untuk MS SQL Server 2008?

107

Saya menjalankan MS SQL Server 2008 di komputer lokal saya. Saya tahu bahwa port default adalah 1433 tetapi entah mengapa tidak mendengarkan di port ini. SQL adalah edisi Ekspres.

Saya telah mencoba log, SQL Server Management Studio, registri, dan prosedur penyimpanan yang diperpanjang untuk menemukan port. Tapi, saya tidak bisa menemukannya. Tolong bantu aku. Terima kasih.

royalghost
sumber
Saya memperbarui pertanyaan dengan sumber daya lain yang saya lihat sehingga saya memiliki penanda buku dan orang lain dapat menggunakannya juga. blogs.msdn.com/sql_protocols/archive/2008/11/05/... decipherinfosys.wordpress.com/2008/01/02/... dumbledad.wordpress.com/2008/07/09/...
royalghost
Saya menggunakan TCP View untuk melihat port yang menjalankannya. Saya terkejut melihat bahwa server menggunakan port dinamis daripada 1433 bahkan setelah menginstalnya sebagai contoh default. Saya juga menghapus instalasi edisi ekspres dan menginstal edisi lengkap setelah itu hanya saya yang dapat melihat prosesnya sebagai sqlservr.exe: 5272. Dan, asumsi saya adalah mendengarkan di port 5272.
royalghost

Jawaban:

140

Klik Starttombol di Windows. Pergi keAll Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Klik SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP dua kali klik (klik kanan pilih Properties) TCP/IP.

Anda akan menemukannya Default Port 1433.

Tergantung pada koneksi, nomor port mungkin berbeda.

UdayKiran Pulipati
sumber
Di komputer saya, menjalankan Windows 10 dan dengan SQL Server 2012 Express terinstal, SQL Server Configuration Manager tidak terdaftar di menu mulai Windows tetapi dapat ditemukan di snap-in MMC Manajemen Komputer di bawah grup Layanan dan Aplikasi . Port dinamis juga tidak berada di bawah item 'SQL native client configuration' (yang merupakan versi "11.0" untuk saya) tetapi di bawah item SQL Server Network Configuration (dan pada tab Alamat IP jendela properti protokol TCP / IP , di bagian paling bawah, dalam pengaturan TCP Dynamic Ports ).
Kenny Evitt
Jawaban ini mengacu pada port klien, bukan port server seperti yang ditanyakan pada pertanyaan awal. Jawaban dari @ brothers28 di bawah ini lebih akurat.
Slogmeister Extraordinaire
52

Anda juga bisa melihat dengan

netstat -abn

Ini memberi port dengan aplikasi terkait yang membuatnya tetap terbuka.

Edit : atau TCPView .

rslite.dll
sumber
Dapatkah Anda memberi tahu saya dengan nama apa MS SQL Server 2008 dinamai sebagai aplikasi?
royalghost
2
Ini harus sqlservr.exe (saya tidak punya satu untuk diperiksa).
rslite
1
Ini berhasil untuk saya. Nomor port ada di baris di atas [sqlservr.exe].
Zane
Saya menemukannya di bawah Ssms.exe
ThiagoPonte
49

Berikut adalah 5 metode yang saya temukan:

  • Metode 1: Manajer Konfigurasi Server SQL
  • Metode 2: Windows Event Viewer
  • Metode 3: Log Galat SQL Server
  • Metode 4: sys.dm_exec_connections DMV
  • Metode 5: Membaca registri menggunakan xp_instance_regread

Metode 4: sys.dm_exec_connections DMV
Saya rasa ini hampir merupakan cara termudah ... DMV
mengembalikan status server yang dapat digunakan untuk memantau SQL Server Instance. Kita dapat menggunakan sys.dm_exec_connections DMV untuk mengidentifikasi nomor port yang didengarkan oleh Instance SQL Server menggunakan kode T-SQL di bawah ini:

SELECT local_tcp_port
FROM   sys.dm_exec_connections
WHERE  session_id = @@SPID
GO

Result Set:
local_tcp_port
61499

(1 row(s) affected)

Metode 1: Manajer Konfigurasi Server SQL

Langkah 1. Klik Mulai> Semua Program> Microsoft SQL Server 2012> Alat Konfigurasi> Manajer Konfigurasi SQL Server

Langkah 2. Buka Manajer Konfigurasi Server SQL> Konfigurasi Jaringan SQL Server> Protokol untuk

Langkah 3. Klik kanan pada TCP / IP dan pilih Properties

masukkan deskripsi gambar di sini

Langkah 4. Dalam kotak dialog Properti TCP / IP, buka tab Alamat IP dan gulir ke bawah ke grup IPAll.

masukkan deskripsi gambar di sini

Jika SQL Server jika dikonfigurasi untuk dijalankan pada port statis, maka akan tersedia di kotak teks Port TCP, dan jika dikonfigurasi pada port dinamis maka port saat ini akan tersedia di kotak teks Port Dinamis TCP. Di sini contoh saya mendengarkan pada nomor port 61499.

Metode lain yang dapat Anda temukan di sini: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/

saudara 28
sumber
1
Bekerja untuk saya. Saya mencoba properti TCP / IP dari konfigurasi klien asli SQL dan itu kembali default 1433. Tetapi ketika saya memeriksa port TCP dinamis dari konfigurasi jaringan SQL Server. Saya menemukan portnya 67244. Dan setelah itu saya berhasil terhubung ke port itu. +1
Ruben
17

Saya menemukan ini karena saya baru saja mengalami masalah saat membuat koneksi jarak jauh dan tidak dapat memahami mengapa menyiapkan port 1433 di firewall tidak berhasil. Saya akhirnya memiliki gambaran lengkapnya sekarang, jadi saya pikir saya harus membagikannya.

Pertama-tama adalah suatu keharusan untuk mengaktifkan "TCP / IP" menggunakan Manajer Konfigurasi Server SQL di bawah Protokol untuk SQLEXPRESS!

Ketika contoh bernama digunakan ("SQLExpress" dalam kasus ini), ini akan mendengarkan pada port dinamis. Untuk menemukan port dinamis ini, Anda memiliki beberapa opsi; untuk beberapa nama:

  • memeriksa ERRORLOGSQL Server yang terletak di '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'( di dalamnya Anda akan menemukan baris yang mirip dengan ini: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"-> jadi 51118 adalah port dinamis dalam kasus ini.

  • memeriksa registri:, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAlluntuk kasus saya TcpDynamicPorts=51118.

    Edit : {MSSQL instance name}adalah seperti:, MSSQL10_50.SQLEXPRESStidak hanyaSQLEXPRESS

Tentu saja, mengizinkan port TCP ini di firewall dan membuat koneksi jarak jauh dengan meneruskan: "x.x.x.x,51118"(di mana xxxx adalah ip server) sudah menyelesaikannya pada titik ini.

Tapi kemudian saya ingin terhubung dari jarak jauh dengan memasukkan nama instance (misalnya:) x.x.x.x\SQLExpress. Ini adalah saat layanan SQL Browser mulai bekerja. Ini adalah unit yang menetapkan nama instance ke port 51118. Layanan SQL Browser mendengarkan pada port UDP 1434 (standar & statis), jadi saya harus mengizinkan ini juga di firewall server.

Untuk memperluas sedikit jawaban sebenarnya: jika orang lain tidak menyukai port dinamis dan menginginkan port statis untuk contoh SQL Server-nya, harus mencoba tautan ini .

Pelajar
sumber
1
1 untuk layanan SQL Browser. Ini adalah kunci bagaimana SQL Express bekerja dengan nomor port
peterG
11

Dalam log ERROLOG untuk garis seperti di bawah ini. Jika Anda tidak melihatnya, SQL Server tidak diaktifkan untuk akses jarak jauh, atau tidak melalui TCP. Anda dapat mengubahnya melalui Manajer Konfigurasi Server SQL.

Server is listening on [ 192.128.3.2 <ipv4> 1433].
mrdenny
sumber
Saya tidak melihat log itu tetapi di SQL Server Management Studio di bawah Sambungan "Izinkan sambungan jarak jauh ke server ini" dicentang. Oleh karena itu, pemahaman saya adalah bahwa koneksi jarak jauh diperbolehkan.
royalghost
@royal: Selain 'mengizinkan koneksi jarak jauh', Anda juga harus mengaktifkan protokol TCP. Saat ini server mungkin hanya mendengarkan NP
Remus Rusanu
lihat jawaban di bawah dari @morteza untuk membaca log melalui kueri SQL xp_readerrorlog 0, 1, N'Server is listening on'
Tilo
8

Saya memecahkan masalah dengan mengaktifkan TCP / IP menggunakan SQL Server Configuration Manager di bawah Protokol untuk SQLEXPRESS2008, saya memulai ulang layanan dan sekarang "Server sedang mendengarkan" muncul di file ERRORLOG

Lepez
sumber
8

Coba ini (memerlukan akses ke sys.dm_exec_connections):

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL
Tilo
sumber
3
FYI: jika server SQL tidak memiliki koneksi terbuka, kemungkinan besar tidak akan menampilkan apa pun.
Tilo
6
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[Identifikasi Port yang digunakan oleh Instance Bernama dari Mesin Database SQL Server dengan Membaca Log Kesalahan SQL Server]

Morteza
sumber
1
terima kasih tip bagus Morteza, saya mendapatkan kesalahan menggunakan di atas pada SQL2012 tetapi berikut ini cukup untuk kebutuhan saya: XP_READERRORLOG 0, 1, N'Server sedang mendengarkan '
mattpm
Salin yang mendapatkan kesalahan dengan kueri Anda tetapi ini berhasil, xp_readerrorlog 0, 1, N'Server is listening on'
Tilo
6

Anda dapat menggunakan dua perintah ini: tasklistdannetstat -oan

Tasklist.exeseperti taskmgr.exetetapi dalam mode teks.

Dengan tasklist.exeatau taskmgr.exeAnda bisa mendapatkan PIDsqlservr.exe

Dengan netstat -oan, ini menunjukkan koneksi PID, dan Anda dapat memfilternya.

Contoh:

C:\>tasklist | find /i "sqlservr.exe"
sqlservr.exe  1184 Services    0 3.181.800 KB

C:\>netstat -oan | find /i "1184"
TCP  0.0.0.0:1280  0.0.0.0:0  LISTENING  1184

Dalam contoh ini, port SQLServer adalah 1280

Diambil dari: http://www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html

Demestrestalk
sumber
5

Saya menggunakan skrip berikut di SSMS

SELECT
     s.host_name
    ,c.local_net_address
    ,c.local_tcp_port
    ,s.login_name
    ,s.program_name
    ,c.session_id
    ,c.connect_time
    ,c.net_transport
    ,c.protocol_type
    ,c.encrypt_option
    ,c.client_net_address
    ,c.client_tcp_port
    ,s.client_interface_name
    ,s.host_process_id
    ,c.num_reads as num_reads_connection
    ,c.num_writes as num_writes_connection
    ,s.cpu_time
    ,s.reads as num_reads_sessions
    ,s.logical_reads as num_logical_reads_sessions
    ,s.writes as num_writes_sessions
    ,c.most_recent_sql_handle
FROM sys.dm_exec_connections AS c
INNER JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id

--filter port number
--WHERE c.local_tcp_port <> 1433
Rubens
sumber
Tidak yakin mengapa ini diturunkan suara, itu tidak memberikan jawaban langsung tetapi memberi Anda jawaban dan lebih banyak lagi. Menambahkan ini ke daftar kueri berguna saya.
Tony
sangat menyukai kueri, juga sepertinya tidak menunjukkan jika tidak ada koneksi yang terbuka / dibuat.
Tilo
4

Ini juga dapat dilakukan melalui pemindaian port, yang merupakan satu-satunya metode yang mungkin jika Anda tidak memiliki akses admin ke server jarak jauh.

Menggunakan Nmap ( http://nmap.org/zenmap/ ) untuk melakukan "Intense TCP scan" akan memberi Anda hasil seperti ini untuk semua instance di server:

[10.0.0.1\DATABASE]    
Instance name: DATABASE
Version: Microsoft SQL Server 2008 R2 RTM    
Product: Microsoft SQL Server 2008 R2    
Service pack level: RTM    
TCP port: 49843    
Named pipe: \\10.0.0.1\pipe\MSSQL$DATABASE\sql\query

Catatan penting: Untuk menguji dengan query analyzer atau MS SQL Server Management Studio Anda harus membentuk nama server dan port yang berbeda dari yang biasanya Anda sambungkan ke port, melalui HTTP misalnya, menggunakan koma, bukan titik dua .

  • Nama Server Studio Manajemen: 10.0.0.1,49843
  • String Koneksi: Data Source=10.0.0.1,49843

namun

  • String Koneksi JDBC: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE
Shane
sumber
1

Ini bekerja untuk SQL Server 2005 - 2012. Cari acara id = 26022 di log kesalahan di bawah aplikasi. Itu akan menunjukkan nomor port server sql serta alamat ip apa yang diizinkan untuk diakses.

Mukus
sumber
1

Selain apa yang tercantum di atas, saya harus mengaktifkan port TCP dan UDP untuk SQLExpress untuk terhubung dari jarak jauh. Karena saya memiliki tiga contoh berbeda di mesin pengembangan saya, saya mengaktifkan 1430-1435TCP dan UDP.

D. Davidson
sumber