重要本文包含有關如何修改登錄的資訊。請確定您在修改之前,先備份登錄。請確定您知道如何在發生問題時還原登錄。如需有關如何備份、 還原和修改登錄的詳細資訊,請按一下下面的文件編號,檢視 「 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 網站:

http://technet.microsoft.com/en-us/sqlserver/bb331754.aspx

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?

感謝您的意見反應!

×