疑難排解系列-磁帶篇

by adonis 4. 九月 2013 15:35

前言

疑難排解系列又回來了!其實這方面的文章一直都在,主要是搜尋一些實務上常會遇到的問題,按照原理面一一將困難的部份解決,進而順序解決需求。我在上課時曾經提過一個觀點,就是管理的進階就是疑難排解,而疑難排解是沒有結束的一天,只要有需求,有問題,就會有疑難排解,本期的疑難排解問題是磁帶備份時所發生的問題,讓我們繼續看下去…

磁帶備份

有學過基本的資料庫管理課程的朋友應該知道,SQL Server並不支援網路的磁帶裝置,換句話說,每台磁帶機必需安裝在 SQL Server的本機上,雖然微軟一直宣稱以後也許不再支援磁帶備份,但個人認為可能只是說說的而以,畢竟磁帶備份依然是有它的優點(儲存量大,方便保存),磁帶裝置也並沒有停產,甚至從以前的 SCSI裝置,SAS裝置,變成連 USB裝置都有相關的磁帶機問市。

但之前在我的信箱,發現了一封信,有人問我他的 SQL Server管理工具無法看到磁帶裝置,而他確實已經裝了磁帶機,並且用截圖的方式證明了這件事情,如下:

image

image

由裝置管理員中,確實有一台 HP的磁帶機(而且是 USB的機型喔),但是在 SQL Server Management Studio中並沒有辦法看到,而裝置管理員中,也並沒有感覺裝置有問題。

如果這個問題改成「插一個 USB的硬碟或是隨身碟」,結果 SQL Server Management Studio看不到,應該怎麼辦,我想可能有類似的答案都會出爐,因為 SQL Server Management Studio要在管理工具能看到裝置,很顯然是作業系統要提供磁碟代號或是相關的資訊,各位寫過程式應該就會知道我的意思,也就是說,像 SQL Server Management Studio這樣的應用程式,要裝取作業系統的裝置,絕對不是自己寫函式去做,而是呼叫現成的 .NET函式,要求作業系統回傳磁碟代碼。
也就是說,可能不是 SQL Server Management Studio自己看不到,而是作業系統看不到的問題。

當然,這只是疑難排解的可能性之一,正確的步驟還是要照正確的方式一步步解決。
首先,我們先需要到 http://www.windowsservercatalog.com/ 這個網站,先確認一下你所使用的磁帶裝置是否是被 Windows Server所支援。

很多人常會乎略這個動作,但事實上疑難排解的第一守則,就是不要有先入為主的觀點,認為「這件事情我一定做過」,或是「一定不是這個問題」,但事實上很多證明都可以發現,你所自以為的不是這個問題,通常就是可能的原因.

再者,先前有沒有類似的經驗也是一個很重要的參考依據,例如以本例而言,之前從沒有裝過磁帶裝置,所以是第一次裝就無法抓到,而有些人則是之前有抓成功過,但這次無法抓到.

無論答案是什麼,我們只是想確認到底是因為你動了什麼東西導致功能不正常,還是這是一個最開始的狀態.像我的經驗有裝過本機磁帶機,裝完後可以被 SQL SEVER管理工具抓到,而我也有類似的經驗是在SCSI磁碟上安裝作業系統,結果 Bios一開始就抓不到,變成要在安裝時先要用磁片驅動SCSI裝置才能順利在 windows安裝程式中看到SCSI硬碟,這些都是一些過往的經驗,但確可以應用在實際的環境之中.

image

好的!可以確認的是,HP公司出的 USB磁帶裝置是可以被 Windows Server 支援的。

接下來,我們要知道一個知識,就是 SQL Server是透過 xp_get_tape_devices 這個預存程序讀取註冊機碼,藉以判斷是否有本機磁帶被安裝(這也是為什麼不支援網路磁帶機的原因),而這個預存程序是抓HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi

這裡的資訊,所以我以前的印象都是 SCSI裝置是沒有問題的(應該SAS的裝置也是沒問題吧,如果它會去抓 SAS目錄的話)。
而 USB裝置則是在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
這個註冊機碼。所以預設使用 USB的磁帶,管理工具會看不到,也就是這個原因。

所以我們把問題分成下列兩種情況的磁帶機:

如果是 SCSI的裝置 Windows Server有支援,結果 SQL Server Management Studio找不到,則只好請你自行輸入下列語法以完成備份或還原:

BACKUP DATABASE AdventureWorks TO TAPE='\\.\TAPE0'
RESTORE DATABASE AdventureWorks FROM TAPE='\\.\TAPE0'

如果是 USB裝置的話,確實無法改變 xp_get_tape_devices這個預存程序改抓新的 USB磁帶註冊機碼的位置,所以也只能請你用指令的方式:

USE master go EXEC sp_addumpdevice 'tape', '裝置名稱','\\.\Tape0'

換言之,SQL Server Management Studio程式已經寫死,只要是想用圖形界面能看到磁帶機裝置,是不可能的事情,除非微軟把 SQL Server Management Studio改版,變成可以同時抓 SCSI或 SAS的磁帶,以及 USB的磁帶機。

其實相同的情況,你在 SQL Sever Management Studio中也看不到網路磁碟機,同樣也是需要透過指令的方式加入,這點其實你在很多書籍並沒有特別提到.

 

後記

其實我所撰寫的這一系列文章,不只是疑難排解系列,而是所有文章,幾乎都是和實務上所遇到的問題有所關聯,畢竟平常教 SQL Server,如果寫的文章又和課堂上的教材內容一模一樣就沒有意思了,況且實務上的疑難排解在教科書上絕對找不到相同的案例,唯有不斷的吸收各方的經驗才能成為一個全方位的資料庫管理人員。歡迎各位如果有什麼實務上的問題,或是情境,能提供給我參考☺。

image

Tags:

新增評論




  Country flag
biuquote
  • 評論
  • 線上預覽
Loading






NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List