Man*_*jot 4 sql-server dynamic-ports
使用 TSQL,如何确定 MS SQL 服务器(任何版本)是配置为使用静态端口还是使用动态端口?
我正在尝试使用的脚本:
DECLARE @TcpPort VARCHAR(5)
,@RegKey VARCHAR(100)
IF @@SERVICENAME !='MSSQLSERVER'
BEGIN
SET @RegKey = 'SOFTWARE\Microsoft\Microsoft SQL Server\' + @@SERVICENAME + '\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'
END
ELSE
BEGIN
SET @RegKey = 'SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER\SUPERSOCKETNETLIB\TCP\IPAll'
END
EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE'
,@key = @RegKey
,@value_name = 'TcpPort'
,@value = @TcpPort OUTPUT
EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE'
,@key = @RegKey
,@value_name = 'TcpDynamicPorts'
,@value = @TcpPort OUTPUT
SELECT @TcpPort AS PortNumber
,@@SERVERNAME AS ServerName
,@@SERVICENAME AS ServiceName
Run Code Online (Sandbox Code Playgroud)
您可以从错误日志中确定实例正在使用哪个端口,但不能确定它是静态的还是动态的。
EXEC xp_readerrorlog 1, 1, 'Server is listening'
Run Code Online (Sandbox Code Playgroud)
另一种方法是通过 xp_regread 从注册表中读取。
DECLARE
@StaticPort NVARCHAR(512)
, @DynamicPort NVARCHAR(512)
EXEC xp_regread
'HKEY_LOCAL_MACHINE'
, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'
, 'TcpPort'
, @StaticPort OUTPUT
EXEC xp_regread
'HKEY_LOCAL_MACHINE'
, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'
, 'TcpDynamicPorts'
, @DynamicPort OUTPUT
SELECT
@StaticPort AS StaticPort
, @DynamicPort AS DynamicPort
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2917 次 |
| 最近记录: |