String-Pool驗證
Windows Installer 會將所有資料庫字串儲存在單一共用字串集區中,以減少資料庫的大小並改善效能。 驗證字串集區的唯一方法,就是使用 Windows Installer SDK 中找到的 MsiInfo 工具。
字串集區驗證封裝含兩個主要檢查:
DBCS 字串測試
DBCS 字串測試會掃描資料庫中的每一個字串是否有兩個準則:針對標示中性字碼頁的套件,如果任何字元是擴充字元 (大於 127) ,則會標示字串,並顯示訊息,指出資料庫的字碼頁無效,因為這些字元要求在所有系統上都一致地轉譯特定的字碼頁。
如果資料庫有字碼頁,則會掃描每個字串是否有不正確 DBCS 指標。 如果未正確標示非中性字元串,字元將無法正確轉譯。 (這通常是因為使用資料庫中已有非中性字元串的 _ForceCodepage 資料表,強制字碼頁成為特定值所造成。) 請注意,這項檢查需要將資料庫的字碼頁安裝在系統上。
如果字碼頁發生問題,使用者可能會使用 _ForceCodepage 資料表修正錯誤,強制將資料庫的字碼頁強制為適當的值。 如需詳細資訊,請參閱 字碼頁處理。
參考計數驗證
若要確認所有字串的參考計數,系統會掃描每個資料表中的字串值、保留每個相異字串的計數,而且結果會與資料庫字串集區中儲存的參考計數進行比較。
如果有字串參考計數問題,使用者應該使用 MsiDatabaseExport立即匯出資料庫的每個資料表、建立新的資料庫,以及使用 MsiDatabaseImport將資料表匯入新資料庫中。 新資料庫接著會擁有與舊資料庫相同的內容,但字串參考計數正確。 從具有損毀字串集區的資料庫中新增或刪除資料,可能會增加資料庫損毀和資料遺失,因此快速採取這些步驟非常重要,以避免進一步的資料遺失。
重建資料庫時,請記得在新的資料庫中內嵌任何必要的儲存體和資料流程, (請參閱 _Streams資料表 和 _Storages資料表) ,並注意字碼頁問題。 也請記得設定每個必要的 摘要資訊資料流程 屬性。