SQL Server 2016: xp_RegRead не - PullRequest
       6

SQL Server 2016: xp_RegRead не

0 голосов
/ 23 сентября 2019

Я использую следующий скрипт, чтобы определить, запущены ли Named Pipes или нет для проверки безопасности.

Declare @InstanceName varchar(300)
Declare @version varchar(10)
Declare @Regread_cmd varchar(max)
Declare @NPEnabled table (Value varchar(50),Data INT)

set @InstanceName = convert(varchar,(SELECT CASE WHEN SERVERPROPERTY('InstanceName') IS NULL THEN 'MSSQLSERVER' ELSE SERVERPROPERTY('InstanceName') END AS InstanceName))
--select @InstanceName

set @Version = convert(varchar,(select SERVERPROPERTY('ProductMajorVersion') AS ProductMajorVersion))
if (@Version = 10)
    set @Version = '10_50'
--select @version

SET @Regread_cmd = 'xp_regread ''HKEY_LOCAL_MACHINE'',''SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL' + @version +'.' + @InstanceName + '\MSSQLServer\SuperSocketNetLib\Np'',''Enabled'';'
--select @Regread_cmd

Insert Into @NPEnabled EXEC(@Regread_cmd)

SELECT CASE WHEN data = 0 THEN 'Pass' WHEN data = 1 THEN 'Fail' ELSE 'Unknown' END AS 'Check2.10' from @NPEnabled

Когда я запускаю этот скрипт.Я не получаю никаких результатов.

enter image description here

Когда я запускаю скрипт самостоятельно:

xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Np','Enabled'

Я получаю это:

RegOpenKeyEx () вернул ошибку 2, «Системе не удалось найти указанный файл.»

Сообщение 22001, уровень 1, состояние 1
(затронуто 0 строк)
Время завершения: 2019-09-23T16: 23: 17.8673509-04: 00

enter image description here

Но если я напишу сценарий:

xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Np','Enabled'

Работает.

enter image description here

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...