徵兆
請試想下列案例:
-
你在 Microsoft SQL Server 2008 R2 中建立資料庫。
-
你可以透過 ALTER DATABASE 陳述式來更新資料庫的邏輯名稱。
-
你要完整備份資料庫。 注意:備份完成後會產生完整的資料庫備份檔案。
-
你嘗試從資料庫備份檔案還原資料庫。
在此案例中,您收到下列錯誤訊息:
Msg 3234,第16層,狀態2,第1行 邏輯檔案 '<邏輯檔名>' 不屬於資料庫 '<資料庫名稱>'。 使用 RESTORE FILELISTONLY 來列出邏輯檔名。訊息 3013,第 16 層,狀態 1,第 1行,還原資料庫異常終止。
如果你用 RESTORE FILELISTONLY 陳述式檢查備份檔案,你會發現你更新的邏輯檔名已經損壞。 邏輯檔名的最後一個字元會被截斷。 舉例來說,你嘗試將資料庫的邏輯名稱更新為 DB_modified。 然而,備份檔案中錯誤地改成 DB_modifie。注意:若在邏輯檔名更新後重新啟動 SQL Server 服務,此問題不會發生。
解決方案
累積更新資訊
SQL Server 2008 R2
此問題的修正最初於累積更新6中釋出。 欲了解更多如何取得 SQL Server 2008 R2 累積更新套件的資訊,請點擊以下文章編號以瀏覽 Microsoft 知識庫中的文章:
2489376 SQL Server 2008 R2 累積更新套件 6 備註:由於建置是累積式的,每個新修正釋版本都包含了先前 SQL Server 2008 R2 修正釋版本中所有的熱修補與安全修補。 我們建議您考慮套用包含此熱修正的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
981356 SQL Server 2008 R2 版本是在 SQL Server 2008 R2 發布後釋出的
熱修正資訊
Microsoft 已提供支援的熱修補程式。 不過,這個熱修正僅針對本文所述的問題進行修正。 此熱修正僅適用於遇到本文所述問題的系統。 這個熱修補可能會有額外的測試。 因此,如果您沒有受到此問題嚴重影響,我們建議您等待下一次包含此熱修補丁的軟體更新。如果熱修補程式可供下載,這篇知識庫文章頂部有一個「熱修補丁下載可用」的區塊。 若此部分未出現,請聯絡 Microsoft 客服與支援以取得熱修正。 注意:如果發生其他問題或需要排除故障,您可能需要另行申請服務。 一般的支援費用將適用於不符合本次熱修正範圍的其他支援問題與問題。 欲查詢完整的 Microsoft 客服與支援電話號碼清單,或建立獨立服務請求,請造訪以下 Microsoft 網站:
http://support.microsoft.com/contactus/?ws=support注意「熱修正下載可用」表單顯示該熱修正可用的語言。 如果你看不到你的語言,那是因為該語言沒有熱修正。
先決條件
要套用此熱修補,必須安裝 Microsoft SQL Server 2008 R2。
重新啟動需求
套用這個熱修正後,你不需要重啟電腦。
Hotfix 取代資訊
這個熱修補並不取代其他熱修補。
檔案資訊
此熱修正的英文版本包含以下表格中列出的檔案屬性 (或更新版本的檔案屬性) 。 這些檔案的日期和時間是以 Coordinated Universal Time (UTC) 表示。 當您檢視檔案資訊時,它會轉換為當地時間。 若要查看 UTC 與當地時間的差異,請使用 [控制台] 中 [日期和時間] 項目的 [時區] 索引標籤。
32-bit SQL Server 2008 R2 Database Services Core Instance
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
atxcore.dll |
2009.100.1755.0 |
26464 |
2010年12月24日 |
0:33 |
x86 |
|
datacollectorcontroller.dll |
2009.100.1755.0 |
135520 |
2010年12月24日 |
0:33 |
x86 |
|
ETWCLS.MOF |
不適用 |
1116328 |
2010年12月23日 |
3:54 |
不適用 |
|
instmsdb.sql |
不適用 |
2241260 |
2010年12月22日 |
下午 08:49 |
不適用 |
|
mssqlsystemresource.ldf |
不適用 |
524288 |
2010年12月22日 |
22:52 |
不適用 |
|
mssqlsystemresource.mdf |
不適用 |
63569920 |
2010年12月22日 |
22:52 |
不適用 |
|
sql_engine_core_inst_keyfile.dll |
2009.100.1755.0 |
13664 |
2010年12月24日 |
0:31 |
x86 |
|
sqlaccess.dll |
2009.100.1755.0 |
415584 |
2010年12月24日 |
0:29 |
x86 |
|
sqlagent.exe |
2009.100.1755.0 |
367968 |
2010年12月24日 |
0:34 |
x86 |
|
sqlagent100_msdb_upgrade.sql |
不適用 |
2371245 |
2010年12月23日 |
3:53 |
不適用 |
|
sqlos.dll |
2009.100.1755.0 |
14688 |
2010年12月24日 |
0:22 |
x86 |
|
sqlscriptdowngrade.dll |
2009.100.1755.0 |
14688 |
2010年12月24日 |
0:21 |
x86 |
|
sqlscriptupgrade.dll |
2009.100.1755.0 |
4611424 |
2010年12月24日 |
0:21 |
x86 |
|
sqlservr.exe |
2009.100.1755.0 |
42904928 |
2010年12月24日 |
0:34 |
x86 |
|
sqsrvres.dll |
2009.100.1755.0 |
89952 |
2010年12月24日 |
0:21 |
x86 |
64-bit SQL Server 2008 R2 資料庫服務核心實例
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
atxcore.dll |
2009.100.1755.0 |
31584 |
2010年12月23日 |
23:40 |
x64 |
|
datacollectorcontroller.dll |
2009.100.1755.0 |
262496 |
2010年12月23日 |
23:40 |
x64 |
|
ETWCLS.MOF |
不適用 |
1116328 |
2010年12月23日 |
3:54 |
不適用 |
|
instmsdb.sql |
不適用 |
2241260 |
2010年12月22日 |
下午 08:49 |
不適用 |
|
mssqlsystemresource.ldf |
不適用 |
524288 |
2010年12月22日 |
22:52 |
不適用 |
|
mssqlsystemresource.mdf |
不適用 |
63569920 |
2010年12月22日 |
22:52 |
不適用 |
|
sql_engine_core_inst_keyfile.dll |
2009.100.1755.0 |
14176 |
2010年12月23日 |
23:40 |
x64 |
|
sqlaccess.dll |
2009.100.1755.0 |
403296 |
2010年12月23日 |
23:38 |
x86 |
|
sqlagent.exe |
2009.100.1755.0 |
428384 |
2010年12月23日 |
23:40 |
x64 |
|
sqlagent100_msdb_upgrade.sql |
不適用 |
2371245 |
2010年12月23日 |
3:53 |
不適用 |
|
sqlos.dll |
2009.100.1755.0 |
15712 |
2010年12月23日 |
23:37 |
x64 |
|
sqlscriptdowngrade.dll |
2009.100.1755.0 |
15712 |
2010年12月23日 |
23:37 |
x64 |
|
sqlscriptupgrade.dll |
2009.100.1755.0 |
4610912 |
2010年12月23日 |
23:37 |
x64 |
|
sqlservr.exe |
2009.100.1755.0 |
61957984 |
2010年12月23日 |
23:40 |
x64 |
|
sqsrvres.dll |
2009.100.1755.0 |
105824 |
2010年12月23日 |
23:37 |
x64 |
Itanium-architecture SQL Server 2008 R2 Database Services Core Instance
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
atxcore.dll |
2009.100.1755.0 |
63328 |
2010年12月23日 |
23:05 |
IA64 |
|
datacollectorcontroller.dll |
2009.100.1755.0 |
477024 |
2010年12月23日 |
23:05 |
IA64 |
|
ETWCLS.MOF |
不適用 |
1116328 |
2010年12月23日 |
3:54 |
不適用 |
|
instmsdb.sql |
不適用 |
2241260 |
2010年12月22日 |
下午 08:49 |
不適用 |
|
mssqlsystemresource.ldf |
不適用 |
524288 |
2010年12月22日 |
22:52 |
不適用 |
|
mssqlsystemresource.mdf |
不適用 |
63569920 |
2010年12月22日 |
22:52 |
不適用 |
|
sql_engine_core_inst_keyfile.dll |
2009.100.1755.0 |
19296 |
2010年12月23日 |
23:05 |
IA64 |
|
sqlaccess.dll |
2009.100.1755.0 |
392032 |
2010年12月23日 |
23:01 |
x86 |
|
sqlagent.exe |
2009.100.1755.0 |
1205600 |
2010年12月23日 |
23:09 |
IA64 |
|
sqlagent100_msdb_upgrade.sql |
不適用 |
2371245 |
2010年12月23日 |
3:53 |
不適用 |
|
sqlos.dll |
2009.100.1755.0 |
22368 |
2010年12月23日 |
22:56 |
IA64 |
|
sqlscriptdowngrade.dll |
2009.100.1755.0 |
20832 |
2010年12月23日 |
22:56 |
IA64 |
|
sqlscriptupgrade.dll |
2009.100.1755.0 |
4617056 |
2010年12月23日 |
22:56 |
IA64 |
|
sqlservr.exe |
2009.100.1755.0 |
121762656 |
2010年12月23日 |
23:09 |
IA64 |
|
sqsrvres.dll |
2009.100.1755.0 |
188768 |
2010年12月23日 |
22:56 |
IA64 |
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。
因應措施
要解決這個問題,請使用以下兩種方法之一:
-
在修改邏輯檔名後,執行以下語句重新啟動資料庫:ALTER DATABASE <資料庫名稱> SET OFFLINEALTER DATABASE <資料庫名稱> SET ONLINE
-
當你修改邏輯檔名時,在新的邏輯名稱中加上一個虛擬空間字元。 例如,如果你想將邏輯名稱改為 DB_modified,請使用以下陳述式修改邏輯檔案名稱:ALTER DATABASE <資料庫名稱> MODIFY FILE (NAME=N'<資料庫名稱>', NEWNAME='DB_modified ') -- 附加 ' '到 NEWNAME
參考
欲了解更多關於 ALTER DATABASE Transact-SQL 陳述的資訊,請造訪以下 Microsoft 開發者網絡 (MSDN) 網站:
關於 ALTER DATABASE Transact-SQL 陳述式的一般資訊欲了解更多關於 RESTORE FILELISTONLY Transact-SQL 聲明的資訊,請造訪以下 Microsoft 開發者網絡 (MSDN) 網站: