BUG:當您還原資料庫時若在 SQL 2000 SEM 中重新整理 Databases 資料夾 SQL 會停止運作

BUG #: 101115

當您在現有的資料庫頂端還原資料庫時,若同時使用 SQL 2000 Enterprise Manager 以展開或重新整理 Databases 資料夾,SQL Server 7.0 會意外停止運作。您可以從 SQL 7.0/2000 Query Analyzer 或 Enterprise Manager 進行此還原作業。

徵狀

在 SQL 2000 Enterprise Manager 中展開或重新整理 Databases 資料夾的動作會封鎖 RESTORE 命令,並且造成一個死結讓 SQL Server 停止運作。

發生的原因


您現在可以從 Microsoft 取得支援的修正程式,但此修正程式只是用來修正本文所述之問題,應該只能在發生此特定問題的系統上套用此修正程式。將來可能還會對此修正程式執行其他測試,以進一步確保產品品質。因此,如果此問題沒有對您造成嚴重影響,Microsoft 建議您等候下一版會包含此修正程式的 Microsoft SQL Server 7.0 Service Pack。

要立刻解決這個問題,請與 Microsoft 產品支援服務連絡,取得修正程式。若需 Microsoft 產品支援服務的電話號碼清單以及支援費用的資訊,請連至下面全球資訊網網址:

http://support.microsoft.com/directory/overview.asp
注意:在特殊情況中,如果 Microsoft 支援專員認為某特定更新程式可以解決您的問題,可能就不會收取一般因支援電話所產生的費用。如果有其他支援問題是所述的特定更新程式無法解決的,一般才會收取支援費用。


此修正程式的英文版應該具有以下 (或更新) 的檔案屬性:

版本 檔名 平台
-----------------------------------------
7.00.976 s70976i.exe Intel
s70976a.exe Alpha
注意:
因為檔案的相依性,最新版的重要修正程式或包含上述檔案的功能也可能會包含其他檔案。


解決方案

正在進行還原作業時請勿從 SQL Server 2000 Enterprise Manager 中展開或重新整理 Databases 資料夾。

其他可行方案


Microsoft 已確認 SQL Server 7.0 確實有上述問題。 Microsoft 已確認 Microsoft SQL Server 7.0 確實有上述問題。

狀況說明

重現問題的步驟


請執行下列步驟以重現問題:


  1. 開啟 Query Analyzer 並發出一個簡單的還原命令。請注意,資料庫必須在執行還原作業之前就已經存在

    RESTORE DATABASE pubs FROM DISK = 'C:\pubs.bak'
  2. 同時,請開啟 SQL 2000 Enteprise Manager 並展開 Databases 資料夾。SQL Server 會停止運作

其他相關資訊

SQL 2000 Enterprise Manager 會發出下面命令以擴展 Databases 資料夾:


   select name, DATABASEPROPERTY(name, N'IsDetached'),     
(case when DATABASEPROPERTY(name, N'IsShutdown')
is null then -1 else DATABASEPROPERTY(name, N'IsShutdown') end),
DATABASEPROPERTY(name, N'IsSuspect'),
DATABASEPROPERTY(name, N'IsOffline'),
DATABASEPROPERTY(name, N'IsInLoad'),
(case when DATABASEPROPERTY(name, N'IsInRecovery')
is null then -1 else DATABASEPROPERTY(name, N'IsInRecovery') end),
(case when DATABASEPROPERTY(name, N'IsNotRecovered')
is null then -1 else DATABASEPROPERTY(name, N'IsNotRecovered') end),
DATABASEPROPERTY(name, N'IsEmergencyMode'),
DATABASEPROPERTY(name, N'IsInStandBy'),
has_dbaccess(name),
status, category, status2 from master.dbo.sysdatabases

另一方面,由 SQL 7.0 Enterprise Manager 所執行的命令如下:


   sp_MSdbuseraccess
GO
select name, DATABASEPROPERTY(name, N'IsDetached'),
DATABASEPROPERTY(name, N'IsShutdown'),
DATABASEPROPERTY(name, N'IsSuspect'),
DATABASEPROPERTY(name, N'IsOffline'),
DATABASEPROPERTY(name, N'IsInLoad'),
DATABASEPROPERTY(name, N'IsInRecovery'),
DATABASEPROPERTY(name, N'IsNotRecovered'),
DATABASEPROPERTY(name, N'IsEmergencyMode'),
DATABASEPROPERTY(name, N'IsInStandBy'),
status, category, status2 from master..sysdatabases

SQL 7.0 Enterprise Manager 會使用 'sp_MSdbuseraccess' 預存程序來判斷您是否可以存取資料庫,另一方面,SQL 2000 Enterprise Manager 則是使用 'has_dbaccess()' 函數。


然而,問題並沒有發生,這是因為 SQL 2000 Enterprise Manager 是叫用 'has_dbaccess()',而此函數的實作會封鎖還原作業並造成一個死結讓 SQL Server 停止運作。

本文件是根據 Microsoft Knowledgebase 文件編號 Q308399 翻譯的。若要參考原始英文文件內容,請至以下網址:


http://support.microsoft.com/support/kb/articles/Q308/3/99.asp

参考

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

×