重要本文包含有關如何修改登錄的資訊。請確定您在修改之前,先備份登錄。請確定您知道如何在發生問題時還原登錄。如需有關如何備份、 還原和修改登錄的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
Microsoft Windows 登錄256986說明
狀況
Microsoft SQL Server 2000年為基礎的電腦升級到 Microsoft SQL Server 2000 Service Pack 4 (SP4) 之後,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 實作限制哪些登錄路徑上登錄延伸預存程序可以存取。當查詢呼叫延伸預存程序登錄時,登錄延伸預存程序會檢查要求的登錄子機碼,針對控制清單的登錄 hive。如果查詢要求的登錄子機碼不在 [控制項] 清單中,您會收到下列錯誤訊息:
' 時拒絕存取 」。
這個錯誤訊息沒有這些登錄的哪一個呼叫延伸預存程序內容中的 SQL Server 使用者帳戶的權限。即使使用者具有系統管理權限,則會發生的錯誤訊息。
注意當您收到錯誤訊息時,登錄不延伸預存程序傳回任何結果。
解決方案
警告如果您修改登錄不當使用 「 登錄編輯器,或使用另一種方法,可能會發生嚴重的問題。這些問題可能會要求您重新安裝作業系統。Microsoft 不保證可以解決這些問題。修改登錄請自行承擔風險。
警告登錄延伸預存程序會記載,但有可能變更。因此,我們不建議您在您的用戶端程式碼呼叫這些程序。未來的實作,這些程序可能不支援。此外,也沒有過去的實作將會繼續支援較新版本的 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 < Instance_name > Server\ \MSSQLServer\ExtendedProcedure
注意Instance_name是 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 的執行個體的實際名稱所取代。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ < 執行個體 >
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 的執行個體的實際名稱所取代。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ < 執行個體 >
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Services\SQLAgent$<INSTANCE>
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\80\Replication
更多的資訊
當您安裝 SQL Server 2000 Service Pack 4 時,安裝程式會預先填入這兩個Xp_regread 允許路徑登錄項目和Xp_regwrite 允許路徑的登錄項目,以延伸預存程序的 SQL Server 2000可以存取。
如需有關 SQL Server 2000 service pack 的詳細資訊,請造訪下列 Microsoft 網站: