MS SQL Server 2008 için bağlantı noktası nasıl bulunur?


107

Yerel makinemde MS SQL Server 2008 çalıştırıyorum. Varsayılan bağlantı noktasının 1433 olduğunu biliyorum, ancak biraz bu bağlantı noktasında dinleme yapmıyor. SQL, bir Express sürümüdür.

Bağlantı noktasını bulmak için günlüğü, SQL Server Management Studio'yu, kayıt defterini ve genişletilmiş saklı yordamı zaten denedim. Ama bulamadım. Lütfen bana yardım et. Teşekkürler.


Soruyu, baktığım diğer kaynaklarla güncelliyorum, böylece onların yer imlerine sahip olacağım ve diğerleri de onlardan faydalanabilsin. blogs.msdn.com/sql_protocols/archive/2008/11/05/… decipherinfosys.wordpress.com/2008/01/02/… dumbledad.wordpress.com/2008/07/09/…
royalghost

Çalıştırdığı bağlantı noktasını görmek için TCP Görünümünü kullanıyorum. Sunucunun, varsayılan bir örnek olarak yükledikten sonra bile 1433 yerine dinamik bir bağlantı noktası aldığını görmek beni şaşırttı. Ayrıca ekspres sürümü kaldırdım ve tam sürümü yükledim, bundan sonra işlemi yalnızca ben sqlservr.exe: 5272 olarak görebilirim. Ve benim varsayımım, 5272 numaralı bağlantı noktasında dinlediği
yönünde.

Yanıtlar:


140

StartWindows'ta düğmesine tıklayın . GitAll Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Tıklayın SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP çift tıklama (Sağ seçme tıklayın Propertiesüzerine) TCP/IP.

Bulacaksın Default Port 1433.

Bağlantıya bağlı olarak port numarası değişebilir.


Bilgisayarımda, Windows 10 çalıştıran ve SQL Server 2012 Express yüklü olan SQL Server Configuration Manager , Windows başlat menüsünde listelenmiyor ancak Hizmetler ve Uygulamalar grubu altında Bilgisayar Yönetimi MMC ek bileşeninde bulunabilir . Dinamik bağlantı noktası da 'SQL yerel istemci yapılandırması' öğesinin (benim için sürüm "11.0") altında değil, SQL Sunucusu Ağ Yapılandırması öğesinin altında (ve TCP / IP protokol özellikleri penceresinin IP Adresleri sekmesinde , en altta, TCP Dinamik Bağlantı Noktaları ayarında ).
Kenny Evitt

Bu yanıt, asıl soruda sorulan sunucu bağlantı noktasını değil, istemci bağlantı noktasını ifade eder. Aşağıdaki @ brothers28'in cevabı daha doğrudur.
Slogmeister Extraordinaire

52

Şununla da bakabilirsin

netstat -abn

Bağlantı noktalarına, açık kalmalarını sağlayan ilgili uygulama verir.

Düzenle : veya TCPView .


MS SQL Server 2008'in hangi adla uygulama olarak adlandırıldığını bana bildirir misiniz?
royalghost

2
Sqlservr.exe olmalıdır (Yine de kontrol etmem gereken bir tane yok).
rslite

1
Bu benim için çalıştı. Bağlantı noktası numarası [sqlservr.exe] üzerindeki satırdadır.
Zane

Ssms.exe altında buldum
ThiagoPonte

49

İşte bulduğum 5 yöntem:

  • Yöntem 1: SQL Server Yapılandırma Yöneticisi
  • Yöntem 2: Windows Olay Görüntüleyicisi
  • Yöntem 3: SQL Server Hata Günlükleri
  • Yöntem 4: sys.dm_exec_connections DMV
  • Yöntem 5: xp_instance_regread kullanarak kayıt defterini okuma

Yöntem 4: sys.dm_exec_connections DMV
Bunun neredeyse en kolay yol olduğunu düşünüyorum ...
DMV'ler, SQL Server Örneğini izlemek için kullanılabilen sunucu durumunu döndürür. SQL Server Örneğinin aşağıdaki T-SQL kodunu kullanarak dinlediği port numarasını belirlemek için sys.dm_exec_connections DMV'yi kullanabiliriz :

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

Result Set:
local_tcp_port
61499

(1 row(s) affected)

Yöntem 1: SQL Server Yapılandırma Yöneticisi

Adım 1. Başlat> Tüm Programlar> Microsoft SQL Server 2012> Yapılandırma Araçları> SQL Server Yapılandırma Yöneticisi öğesine tıklayın.

Adım 2. SQL Server Configuration Manager> SQL Server Network Configuration> Protocols for

Adım 3. TCP / IP'ye sağ tıklayın ve Özellikler'i seçin

görüntü açıklamasını buraya girin

Adım 4. TCP / IP Özellikleri iletişim kutusunda, IP Adresleri sekmesine gidin ve IPAll grubuna gidin.

görüntü açıklamasını buraya girin

SQL Server, statik bir bağlantı noktasında çalışacak şekilde yapılandırılmışsa, TCP Bağlantı Noktası metin kutusunda kullanılabilir olacak ve dinamik bağlantı noktasında yapılandırılmışsa, geçerli bağlantı noktası TCP Dinamik Bağlantı Noktaları metin kutusunda kullanılabilir olacaktır. Benim örneğim 61499 numaralı bağlantı noktasını dinliyor.

Burada bulabileceğiniz diğer yöntemler: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/


1
Benim için çalıştı. SQL Yerel İstemci Yapılandırmasında TCP / IP özelliklerini denedim ve bu varsayılan 1433'ü döndürüyordu. Ancak SQL Server Ağ Yapılandırmasından TCP Dinamik bağlantı noktalarını kontrol ettiğimde. Bağlantı noktasının 67244 olduğunu buldum. Bundan sonra bu bağlantı noktasına başarıyla bağlanabildim. +1
Reuben

17

Bununla karşılaştım çünkü uzak bağlantı kurarken sorun yaşadım ve güvenlik duvarında 1433 bağlantı noktasının neden bu işi yapmadığını anlayamadım. Artık resmin tamamına sahibim, bu yüzden paylaşmam gerektiğini düşündüm.

Her şeyden önce, SQLEXPRESS Protokolleri altında SQL Sunucu Yapılandırma Yöneticisi'ni kullanarak "TCP / IP" yi etkinleştirmeniz gerekir!

Adlandırılmış bir örnek kullanıldığında (bu durumda "SQLExpress"), bu dinamik bir bağlantı noktasını dinleyecektir. Bu dinamik bağlantı noktasını bulmak için birkaç seçeneğiniz vardır; birkaç isim:

  • içinde ERRORLOGbulunan SQL Server'ın kontrolü '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'(içinde buna benzer bir satır bulacaksınız: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"-> bu durumda 51118 bu durumda dinamik bağlantı noktasıdır.

  • kayıt kontrolü:, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAllbenim durumum içinTcpDynamicPorts=51118 .

    Düzenleme : {MSSQL instance name}şunun gibi bir şeydir MSSQL10_50.SQLEXPRESS, yalnızcaSQLEXPRESS

Elbette, bu TCP bağlantı noktasına güvenlik duvarında izin vermek ve aşağıdakileri geçerek uzak bir bağlantı oluşturmak: "x.x.x.x,51118" (burada xxxx sunucu ipidir) zaten bu noktada çözer.

Ancak daha sonra örnek adını (örneğin:) ileterek uzaktan bağlanmak istedim x.x.x.x\SQLExpress. Bu, SQL Browser hizmetinin devreye girdiği zamandır. Bu, örnek adını 51118 bağlantı noktasına çözümleyen birimdir. SQL Browser hizmeti, UDP bağlantı noktası 1434'ü (standart ve statik) dinliyor, bu yüzden buna sunucunun güvenlik duvarında da izin vermem gerekiyordu.

Gerçek yanıtı biraz genişletmek için: Bir başkası dinamik bağlantı noktalarını sevmiyorsa ve SQL Server örneği için statik bir bağlantı noktası istiyorsa, bu bağlantıyı denemelisiniz .


1
SQL Tarayıcı hizmeti için +1. Bu, SQL Express'in bağlantı noktası numaralarıyla nasıl çalıştığının anahtarıdır
peterG

11

Aşağıdaki gibi bir satır için ERROLOG günlüğünde. Görmüyorsanız, SQL Server uzaktan erişim için etkinleştirilmemiştir veya TCP yoluyla değildir. Bunu SQL Server Yapılandırma Yöneticisi aracılığıyla değiştirebilirsiniz.

Server is listening on [ 192.128.3.2 <ipv4> 1433].

Bu günlüğü görmüyorum ama SQL Server Management Studio'da Connections altında "Bu sunucuya uzak bağlantılara izin ver" işaretli. Bu nedenle, anladığım kadarıyla uzaktan bağlantıya izin verilir.
royalghost

@royal: 'Uzak bağlantılara izin ver'e ek olarak, TCP protokolünü de etkinleştirmelisiniz. Şu anda sunucu muhtemelen yalnızca NP dinliyor
Remus Rusanu

SQL sorgusu aracılığıyla günlüğü okumak için @morteza'dan aşağıdaki yanıta bakın xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

8

SQLEXPRESS2008 için Protokoller altında SQL Sunucu Yapılandırma Yöneticisi'ni kullanarak TCP / IP'yi etkinleştirerek sorunu çözdüm, hizmeti yeniden başlattım ve şimdi ERRORLOG dosyasında "Sunucu dinliyor" mesajı görünüyor


8

Bunu deneyin (şunlara erişim gerektirir sys.dm_exec_connections):

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL

3
Bilginize: SQL sunucusunun açık bağlantısı yoksa, muhtemelen hiçbir şey göstermeyecektir.
Tilo

6
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[SQL Server Hata Günlüklerini Okuyarak SQL Server Veritabanı Motorunun Adlandırılmış Örneği tarafından kullanılan Bağlantı Noktasını Tanımlayın]


1
teşekkürler iyi bir ipucu Morteza, SQL2012'de yukarıdakileri kullanırken bir hata alıyorum, ancak aşağıdakiler ihtiyaçlarım için yeterli: XP_READERRORLOG 0, 1, N'Server dinliyor '
mattpm

Sorgunuzla ilgili hata aldığınızı kopyalayın ama bu işe xp_readerrorlog 0, 1, N'Server is listening on'
yarar

6

Bu iki komutu kullanabilirsiniz: tasklistvenetstat -oan

Tasklist.exegibidir taskmgr.exeama metin modunda.

İle tasklist.exeveya taskmgr.exebir PID elde edebilirsinizsqlservr.exe

İle netstat -oan, bir bağlantı PID'sini gösterir ve onu filtreleyebilirsiniz.

Misal:

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

Bu örnekte, SQLServer bağlantı noktası 1280'dir

Alıntı: http://www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html


5

SSMS'de aşağıdaki komut dosyasını kullanıyorum

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

Bunun neden olumsuz oy verildiğinden emin değilim, anında cevap vermiyor ama size yanıtı ve çok daha fazlasını veriyor. Bunu yararlı sorgular listeme ekliyorum.
Tony

sorgu çok fazla olduğu gibi, hiçbir bağlantının açık / kurulmamış olup olmadığını da göstermiyor gibi görünüyor.
Tilo

4

Bu, uzak bir sunucuya yönetici erişiminiz yoksa mümkün olan tek yöntem olan bağlantı noktası taraması yoluyla da yapılabilir.

"Yoğun TCP taraması" yapmak için Nmap'i ( http://nmap.org/zenmap/ ) kullanmak , sunucudaki tüm örnekler için size şu gibi sonuçlar verecektir :

[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

Önemli not: Sorgu analizörü veya MS SQL Server Management Studio ile test etmek için, sunucu adınızı ve bağlantı noktanızı normalde bir bağlantı noktasına bağlanacağınızdan farklı bir şekilde oluşturmalısınız, örneğin HTTP üzerinden iki nokta üst üste yerine virgül kullanarak .

  • Management Studio Sunucu Adı: 10.0.0.1,49843
  • Bağlantı dizisi: Data Source=10.0.0.1,49843

ancak

  • JDBC Bağlantı Dizesi: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

1

Bu , SQL Server 2005 - 2012 için çalışır. Uygulamalar altındaki hata günlüğünde olay kimliği = 26022'yi arayın. Bu, sql sunucusunun port numarasını ve hangi ip adreslerinin erişimine izin verildiğini gösterecektir.


1

Yukarıda listelenenlere ek olarak, SQLExpress'in uzaktan bağlanması için hem TCP hem de UDP bağlantı noktalarını etkinleştirmem gerekiyordu. Geliştirme makinemde üç farklı örneğim olduğundan, 1430-1435hem TCP hem de UDP için etkinleştiriyorum .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.