Ошибка: Появляется сообщение об ошибке «Отказано в доступе» сообщение, если запрос вызывает расширенную хранимую процедуру после обновления до SQL Server 2000 до SQL Server 2000 Пакет обновления 4


Важно. Эта статья содержит сведения об изменении реестра. Убедитесь, что Вы создали резервную копию реестра перед внесением изменений. Убедитесь, что вы знаете, как восстановить реестр в случае возникновения проблем. Дополнительные сведения о том, как сделать резервное копирование, восстановление и изменение реестра, см. в следующей статье базы знаний Майкрософт:
256986 описание реестра Microsoft Windows

Симптомы


После обновления компьютера под управлением Microsoft SQL Server 2000 Пакет обновления 4 (SP4) для Microsoft SQL Server 2000, SQL Server запрос, который вызывает реестра, расширенная хранимая процедура может произойти сбой и появляется следующее сообщение об ошибке:
Отказано в доступе.
Сообщение об ошибке при использовании любого из реестра, расширенные хранимые процедуры в следующем списке:
  • xp_regread
  • xp_instance_regread
  • xp_regenumkeys
  • xp_instance_regenumkeys
  • xp_regenumvalues
  • xp_instance_regenumvalues
  • xp_regwrite
  • xp_instance_regwrite
  • xp_regaddmultistring
  • xp_instance_regaddmultistring
  • xp_regremovemultistring
  • xp_instance_regremovemultistring
  • xp_regdeletevalue
  • xp_instance_regdeletevalue
  • xp_regdeletekey
  • xp_instance_regdeletekey

Причина


Это происходит потому, что SQL Server 2000 SP4 реализует ограничения на какие пути в реестре реестра расширенных хранимых процедур можно получить доступ к. Когда запрос вызывает реестра, расширенную хранимую процедуру, реестра, расширенная хранимая процедура проверяет запрошенный реестра на основе списка управления кустов реестра. Если подраздел, запрашиваются не из раскрывающегося списка, появляется следующее сообщение об ошибке:
«Доступ запрещен».
Это сообщение об ошибке никак не связано с разрешениями учетной записи пользователя SQL Server в контексте какой из этих реестра называется расширенных хранимых процедур. Появляется сообщение об ошибке, даже если пользователь имеет права администратора.


Примечание. При получении сообщения об ошибке, реестр расширенная хранимая процедура возвращает никаких результатов.

Решение


Предупреждение При неправильном изменении реестра с помощью редактора реестра или иным способом могут возникнуть серьезные проблемы. Эти проблемы могут потребовать переустановки операционной системы. Корпорация Майкрософт не гарантирует, что эти проблемы можно решить. Вносите изменения в реестр на ваш собственный риск.

Предупреждение Реестр, расширенные хранимые процедуры не документированы и могут быть изменены. Поэтому не рекомендуется вызывать эти процедуры в коде клиента. Будущих реализаций эти процедуры могут не поддерживаться. Кроме того нет никакой гарантии, последние реализации будут продолжать поддерживаться в более поздних версиях SQL Server.

Чтобы устранить эту проблему, измените раздел реестра, который управляет доступом к реестру расширенных хранимых процедур. Список управления находится в разделе MSSQLServer подраздел реестра. Для экземпляра по умолчанию SQL Server 2000 найдите следующий подраздел реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\ExtendedProcedures
Примечание. Этот раздел реестра не создается при установке SQL Server 2000 SP4 для кластеризованного экземпляра SQL Server.

Для именованного экземпляра SQL Server 2000 найдите и выделите следующий подраздел реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL \MSSQLServer\ExtendedProcedure Server\ < имя_экземпляра >

Примечание. Имя_экземпляра — это имя в SQL Server 2000, именованный экземпляр.
В подразделе ExtendedProcedure существует две записи системного реестра REG_MULTI_SZ.
  • Разрешенные пути Xp_regread
  • Xp_regwrite_Allowed пути
Разрешенные пути Xp_regread содержится следующий список разрешенных реестра в реестр только для чтения, расширенные хранимые процедуры:
  • xp_regread
  • xp_instance_regread
  • xp_regenumkeys
  • xp_instance_regenumkeys
  • xp_regenumvalues
  • xp_instance_regenumvalues
Разрешенные пути Xp_regwrite содержится следующий список разрешенных реестра значения для записи реестра расширенной хранимой процедуры:
  • xp_regwrite
  • xp_instance_regwrite
  • xp_regaddmultistring
  • xp_instance_regaddmultistring
  • xp_regremovemultistring
  • xp_instance_regremovemultistring
  • xp_regdeletevalue
  • xp_instance_regdeletevalue
  • xp_regdeletekey
  • xp_instance_regdeletekey
Чтобы разрешить доступ в нужный раздел реестра, можно удаление записи Xp_regread разрешенные пути или Путей Xp_regwrite_Allowed записи или удалить обе записи. Кроме того можно изменять значения, которые находятся в Пути Xp_regread допускается запись или записи Пути Xp_regwrite_Allowed и добавить расширенную хранимую процедуру, чтобы запрос для доступа к. При удалении Разрешенных путей Xp_regread операция и операция Xp_regwrite разрешенные пути , отключить ограничение значений реестра. Таким образом расширенная хранимая процедура поведение реестра возвращается к поведению версий, чем SQL Server 2000 SP4. Для достижения такого же результата можно удалить раздел реестра ExtendedProcedures . Рекомендуется расширить каждый список с допустимые значения реестра вместо отключения ограничения, который реализует SQL Server 2000 SP4.

Разрешенные пути Xp_regread

Ниже приведен пример записи Разрешенных путей Xp_regread .

Примечание. ЭКЗЕМПЛЯР заменяется фактическое имя экземпляра SQL Server.

Server\ SQL HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft < ЭКЗЕМПЛЯР >

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\80

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQLServer


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\MSSQLServer


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SQLCTRS

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SQLServer


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL$<INSTANCE>


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServer


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Services\SQLAgent$<INSTANCE>

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation


HKEY_CURRENT_USER\Software\Microsoft\Mail HKEY_CURRENT_USER\Control Panel\International

Разрешенные пути Xp_regwrite

Ниже приведен пример записи Xp_regwrite разрешенных путей .

Примечание. ЭКЗЕМПЛЯР заменяется фактическое имя экземпляра SQL Server.

Server\ SQL HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft < ЭКЗЕМПЛЯР >

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Services\SQLAgent$<INSTANCE>

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\80\Replication

Дополнительные сведения


При установке Пакет обновления 4 для SQL Server 2000, программа установки предварительно заполняет оба Xp_regread разрешенных путей реестра и параметр Xp_regwrite разрешенных путей в расширенных хранимых процедур, SQL Server 2000 доступ к.

Дополнительные сведения о пакетах обновления для SQL Server 2000 посетите следующий веб-узел корпорации Майкрософт: