Sql-Server

限制 SQL Server 可用的動態埠範圍

  • November 12, 2014

有沒有辦法從數據庫端或數據庫伺服器端限制 SQL Server 可用的動態埠範圍?我們的 SOP 是跨網路防火牆使用靜態埠,而供應商在鎖定其埠時遇到了麻煩。從理論上講,如果我們允許動態範圍 (49152–65535) 內的 1000 個埠跨過防火牆,我將如何限制 SQL Server 僅分配該範圍內的動態埠?

正如 Cougar9000 自己發現的那樣,臨時(動態)埠的使用不是由應用程序管理,而是由作業系統管理。您只能為整個伺服器更改它。

這個問題的答案確實為您提供了所需的資訊和連結。

簡而言之,你可以做

netsh int ipv4 set dynamicport tcp start=50000 num=1000

請注意,將範圍設置得太小可能會導致TCP/IP 埠耗盡

這是我在評論中提到的 PowerShell 解決方案的開始:

$instanceId = "<Instance ID>";
$registryKey = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instanceId\MSSQLServer\SuperSocketNetLib\TCP\IPAll"
$portNumber = (Get-Item $registryKey).GetValue("TcpDynamicPorts");

netsh advfirewall firewall add rule action=allow localport=$portNumber protocol=TCP dir=in name="SQL Server Database Engine ($instanceId)"

我不確定這是否適合確切的情況,但它可能會幫助那裡的人。

引用自:https://dba.stackexchange.com/questions/50830