Błąd: Może wystąpić błąd "Odmowa dostępu" komunikat, gdy kwerenda wywołuje rozszerzone procedury przechowywanej, po uaktualnieniu z programu SQL Server 2000 do programu SQL Server 2000 z dodatkiem Service Pack 4


Ważne Ten artykuł zawiera informacje dotyczące modyfikowania rejestru. Upewnij się, tworzenie kopii zapasowej rejestru przed przystąpieniem do modyfikacji. Upewnij się, że wiesz, jak przywrócić rejestr w przypadku pojawienia się problemu. Aby uzyskać więcej informacji na temat kopii zapasowej, przywracania i modyfikowania rejestru kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
256986 Opis rejestru systemu Microsoft Windows

Objawy


Po uaktualnieniu komputera z systemem Microsoft SQL Server 2000 do dodatku Service Pack 4 (SP4) dla systemu Microsoft SQL Server 2000, kwerendy programu SQL Server, która wymaga rejestru, rozszerzona procedura składowana może zakończyć się niepowodzeniem i zostanie wyświetlony następujący komunikat o błędzie:
Odmowa dostępu.
Pojawi się komunikat o błędzie podczas korzystania z jednego rejestru rozszerzonych procedur przechowywanych na liście poniżej:
  • 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

Przyczyna


Ten problem występuje, ponieważ SQL Server 2000 z dodatkiem SP4 implementuje ograniczenia na które ścieżki w rejestrze rejestru extended procedur przechowywanych, można uzyskać dostęp. Gdy kwerenda wywołuje rejestru, rozszerzona procedura składowana, rejestru, rozszerzona procedura składowana sprawdza, czy podklucz rejestru żądanej z listą kontroli gałęzi rejestru. Jeśli podklucz rejestru, który żąda kwerendy nie jest na liście kontroli, pojawi się następujący komunikat o błędzie:
"Odmowa dostępu."
Ten komunikat o błędzie nie ma nic wspólnego z uprawnieniami konta użytkownika programu SQL Server w kontekście, z których jeden tych rejestru jest nazywany rozszerzonych procedur przechowywanych. Komunikat o błędzie występuje, nawet jeśli użytkownik ma uprawnienia administratora.


Uwaga Gdy zostanie wyświetlony komunikat o błędzie, rejestr rozszerzona procedura składowana zwraca żadnych wyników.

Rozwiązanie


Ostrzeżenie: Nieprawidłowa modyfikacja rejestru za pomocą Edytora rejestru lub inną metodą może spowodować poważne problemy. Te problemy mogą wymagać ponownej instalacji systemu operacyjnego. Firma Microsoft nie gwarantuje, że możliwe będzie rozwiązanie tych problemów. Modyfikujesz rejestr na własną odpowiedzialność.

Ostrzeżenie: Rejestr rozszerzone procedury przechowywane są nieudokumentowane i mogą ulec zmianie. W związku z tym nie zaleca wywoływać te procedury w kodzie klienta. Przyszłych wdrożeń procedury te mogą nie być obsługiwane. Ponadto nie ma żadnej gwarancji, że ostatnich implementacje będzie w dalszym ciągu być obsługiwana w nowszych wersjach programu SQL Server.

Aby rozwiązać ten problem, należy zmodyfikować klucz rejestru, który kontroluje dostęp do rejestru rozszerzone przechowywane procedury. Formant listy znajduje się w rejestrze w podkluczu MSSQLServer . Dla domyślnego wystąpienia programu SQL Server 2000 zlokalizuj następujący podklucz w rejestrze:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\ExtendedProcedures
Uwaga Ten klucz rejestru nie jest tworzony, gdy zastosujesz do klastrowanego wystąpienia programu SQL Server, SQL Server 2000 z dodatkiem SP4.

Nazwane wystąpienia programu SQL Server 2000 zlokalizuj następujący podklucz w rejestrze:
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\ < nazwa_wystąpienia > \MSSQLServer\ExtendedProcedure

Uwaga: Nazwa_wystąpienia jest nazwą nazwane wystąpienie programu SQL Server 2000.
W podkluczu ExtendedProcedure istnieją dwa wpisy rejestru REG_MULTI_SZ:
  • Xp_regread dozwolone ścieżek
  • Ścieżki Xp_regwrite_Allowed
Wpis Ścieżki dozwolone Xp_regread zawiera następującą listę wartości rejestru dozwolone tylko do odczytu rejestru rozszerzonych procedur przechowywanych:
  • xp_regread
  • xp_instance_regread
  • xp_regenumkeys
  • xp_instance_regenumkeys
  • xp_regenumvalues
  • xp_instance_regenumvalues
Wpis Ścieżki dozwolone Xp_regwrite zawiera następującą listę dozwolonych rejestru wartości rejestru zapisu rozszerzone przechowywane procedury:
  • 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
Aby umożliwić dostęp do podklucza rejestru, który ma, można usunąć wpis Xp_regread dozwolone ścieżki lub wpis Xp_regwrite_Allowed ścieżki lub Usuń oba wpisy. Ponadto można zmodyfikować wartości, które znajdują się w wpis Xp_regread dozwolone ścieżki lub Ścieżki Xp_regwrite_Allowed wpis i dodać rozszerzona procedura składowana, który ma kwerendę, aby uzyskać dostęp. Jeśli usuniesz wejścia Xp_regread dozwolone ścieżki , jak i zapisu Ścieżek dozwolone Xp_regwrite , możesz wyłączyć ograniczenie dla wartości rejestru. W związku z tym rejestru rozszerzona procedura przechowywana zachowaniem przywraca zachowanie przed SQL Server 2000 z dodatkiem SP4. Aby uzyskać ten sam efekt, można usunąć klucz rejestru ExtendedProcedures . Zaleca się rozszerzania każdej listy z wartościami rejestru prawidłowy zamiast wyłączania ograniczeń, który implementuje SQL Server 2000 z dodatkiem SP4.

Xp_regread dozwolone ścieżek

Oto przykładowe dla wpisu Xp_regread dozwolone ścieżki .

Uwaga: Wystąpienie zostanie zastąpione nazwą rzeczywistego wystąpienia programu SQL Server.

HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\ < wystąpienie >

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 dozwolone ścieżek

Oto przykładowe dla wpisu Xp_regwrite dozwolone ścieżki .

Uwaga: Wystąpienie zostanie zastąpione nazwą rzeczywistego wystąpienia programu SQL Server.

HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\ < wystąpienie >

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

HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\80\Replication

Więcej informacji


Po zainstalowaniu dodatku Service Pack 4 dla programu SQL Server 2000 program instalacyjny wstępnie wypełnia zarówno wpis rejestru Xp_regread dozwolone ścieżek i wpis rejestru Xp_regwrite dozwolone ścieżek z rozszerzonych procedur przechowywanych, SQL Server 2000 można uzyskać dostęp.

Aby uzyskać więcej informacji dotyczących dodatków service Pack dla programu SQL Server 2000 odwiedź następującą witrynę firmy Microsoft w sieci Web: