Důležité: Tento článek obsahuje informace o úpravě registru. Přesvědčte se, zda jste zálohovali registr před úpravami. Ujistěte se, že víte, jak registr obnovit v případě výskytu problému. Další informace o zálohování, obnovení a úpravě registru klepněte na následující číslo článku databáze Microsoft Knowledge Base:
256986 Popis registru systému Microsoft Windows
Příznaky
Po upgradu na Microsoft SQL Server 2000 Service Pack 4 (SP4) v počítači se systémem Microsoft SQL Server 2000, SQL Server dotaz, který volá registru rozšířené uložené procedury mohou selhat a zobrazí následující chybová zpráva:
Přístup byl odepřen.
Při použití některé z registru rozšířené uložené procedury v následujícím seznamu se zobrazí chybová zpráva:
-
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
Příčina
Problému dochází, protože SQL Server 2000 SP4 implementuje omezení na kterým cestám registru registru rozšířené uložené procedury přístup. Při dotazu volání rozšířené uložené procedury registru, prozkoumá rozšířené uložené procedury registru podklíč registru požadované před ovládací prvek seznamu podregistrů registru. Pokud podklíč registru, který požaduje dotaz není v seznamu ovládacího prvku, zobrazí se následující chybová zpráva:
"Přístup byl odepřen."
Tato chybová zpráva nemá nic společného s oprávněními uživatelského účtu serveru SQL Server v kontextu, který z nich tyto registru rozšířené uložené procedury se nazývá. Chybová zpráva se zobrazí i v případě, že uživatel nemá oprávnění správce.
Poznámka: Obdržíte chybovou zprávu, registru rozšířené uložené procedury vrátí žádné výsledky.
Řešení
Upozornění: Při nesprávné úpravě registru pomocí Editoru registru nebo jiným způsobem může dojít k vážným problémům. Tyto problémy mohou vyžadovat přeinstalaci operačního systému. Společnost Microsoft nemůže zaručit, že tyto problémy bude možné vyřešit. Úpravy registru provádíte na vlastní nebezpečí.
Upozornění: Rozšířené uložené procedury registru nejsou dokumentovány a se mohou změnit. Proto nedoporučujeme volat tyto procedury v klientském kódu. Budoucí implementace tyto postupy nemusí být podporovány. Kromě toho je zaručeno posledních implementacích se bude i nadále podporovat v novějších verzích serveru SQL Server.
Chcete-li tento problém vyřešit, upravte klíč registru, který řídí přístup k registru rozšířené uložené procedury. Ovládací prvek seznam je umístěn v registru v podklíči MSSQLServer . Pro výchozí instanci serveru SQL Server 2000 vyhledejte následující podklíč registru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\ExtendedProceduresPoznámka: Tento klíč registru není vytvořen při použití SQL Server 2000 SP4 clusteru instance serveru SQL Server.
Pro pojmenované instance serveru SQL Server 2000 vyhledejte následující podklíč registru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ < název_instance > \MSSQLServer\ExtendedProcedure
Poznámka: Název_instance je název pojmenované instance serveru SQL Server 2000.V podklíči ExtendedProcedure se dvěma položkami registru REG_MULTI_SZ:
-
Xp_regread povolen cesty
-
Xp_regwrite_Allowed cesty
Položka Xp_regread povolen cesty obsahuje následující seznam jen pro čtení registru rozšířené uložené procedury registru povolených hodnot:
-
xp_regread
-
xp_instance_regread
-
xp_regenumkeys
-
xp_instance_regenumkeys
-
xp_regenumvalues
-
xp_instance_regenumvalues
Položka Cesty povolen Xp_regwrite obsahuje následující seznam registru povolených hodnot pro zápis registru rozšířené uložené 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
Umožňuje přístup k registru podklíč, který chcete můžete odstranit Xp_regread povolen cesty položky nebo položky Xp_regwrite_Allowed cesty nebo odstranit obě položky. Navíc můžete upravit hodnoty, které jsou v Xp_regread povolen cesty položky nebo položky Xp_regwrite_Allowed cesty a přidat rozšířenou uloženou proceduru, která má dotaz přístup. Pokud odstraníte položku Xp_regread povolen cesty a položka Cesty povolen Xp_regwrite , zakážete omezení pro hodnoty registru. Rozšířené uložené procedury chování registru proto vrátí k chování pre SQL Server 2000 SP4. Chcete-li dosáhnout stejného výsledku, můžete odebrat klíč registru ExtendedProcedures . Doporučujeme rozšíření každého seznamu s hodnotami platný registru namísto zakázání omezení, která implementuje SQL Server 2000 SP4.
Xp_regread povolen cesty
Následuje příklad pro položku Xp_regread povolen cesty .
Poznámka: INSTANCE je nahrazen skutečným názvem instance serveru SQL Server.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ < INSTANCE >
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 povoleny cesty
Následuje příklad pro položka Cesty povolen Xp_regwrite .
Poznámka: INSTANCE je nahrazen skutečným názvem instance serveru SQL Server.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ < INSTANCE >
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Services\SQLAgent$<INSTANCE>
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\80\Replication
Další informace
Při instalaci serveru SQL Server 2000 Service Pack 4 instalační program předem naplní oba Xp_regread povolen cesty registru položka a položky registru Xp_regwrite povoleny cesty s příslušným rozšířeným uloženým procedurám tohoto serveru SQL Server 2000 můžete získat přístup.
Další informace o aktualizacích service Pack pro SQL Server 2000 naleznete na následujícím webu společnosti Microsoft: