將資料庫備份檔(.bak檔)還原到不同的主機為資料庫檔(.mdf檔)

將伺服器的.bak紀錄檔備份回家後,利用還原機制,還原為.mdf資料庫檔的方法。
實例:

要還原的資料庫叫NPUST.mdf
欲還原的bak檔為NPUST_backup_200812060300.bak

存在C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\NPUST_backup_200812060300.bak

設要建立一個新的資料庫叫NPUST或用從伺服器備份來的NPUST舊檔

要用最新的bak檔去覆蓋。一般我們會直接在 資料庫右鍵>工作>還原>資料庫

然後在來源裝置選擇備份媒體>檔案 然後去瀏覽加入.bak檔

可是使用伺服器的bak檔做還原時會出現

System.Data.SqlClient.SqlError: 備份組包含現有的 'NPUST' 資料庫以外的資料庫備份。 (Microsoft.SqlServer.Express.Smo)


System.Data.SqlClient.SqlError: 資料庫 "NPUST" 的記錄結尾尚未備份。若您不想遺失其中的內容,請使用 BACKUP LOG WITH NORECOVERY 備份記錄。亦可使用 RESTORE 陳述式的 WITH REPLACE 或 WITH STOPAT 子句,覆寫記錄的內容。 (Microsoft.SqlServer.Express.Smo)
的錯誤訊息。

解決方法

鍵入的程式碼

restore DATABASE NPUST

from disk='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\NPUST_backup_200812060300.bak'

with

move 'NPUST' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NPUST.mdf',

move 'NPUST_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NPUST_log.ldf'

,NoRecovery

,Replace

go

※程式碼內的檔名跟路徑換成自己需要的。

有顯示已處理的訊息後

像圖一樣,再做一次正常還原手續...

這樣就可以正確的完成還原手續的。

http://blog.yam.com/iamshiao/article/18601917

系統變數

早從DOS就有環境變數(UNIX-like系統也都有)。環境變數是儲存與系統相關的資訊,它的格式很簡單,就是將字串值指定給變數名稱。系統在開機之後,會自行設定若干環境變數,以作為系統運作之用,而這些環境變數的值,原本是存放在登錄資料庫,開機之後才自登錄資料庫取出,並指定給環境變數。

舉例來說,雖然安裝程式預設會將Windows系統安裝到C磁碟機的Windows資料夾、會將軟體安裝到C磁碟機的Program Files資料夾,但這只是預設值,不見得每個Windows都如此,而這些資料夾的實際位置,也會記錄在特定的環境變數 :

* %WinDir% : 記錄Windows系統資料夾

* %ProgramFiles% : 記錄軟體安裝資料夾

也就是說,透過環境變數,將能夠得知系統的相關資訊。環境變數大多數是為程式所用,例如批次檔就常使用環境變數。不過,我們也可以『檔案總管』或『執行』交談窗,配合記錄資料夾位置的環境變數,快速開啟資料夾。例如將%windir%輸入到『檔案總管』的『網址』列,再按下Enter按鍵,『檔案總管』隨即切換到Windows系統資料夾。

系統存取環境變數的順序

1. Autoexec.bat

2. 系統變數

3. 使用者變數

也就是說,相同變數名稱同時經由上述三種方式設定之後,在『使用者變數』所設定的變數值,會蓋過在『系統變數』或『Autoexec.bat』所設定的值;而在『系統變數』所設定的值,會蓋過在『Autoexec.bat』所設定的值。

Windows系統內建的常見環境變數

* %SystemDrive% : 系統磁碟機,預設是C:

* %SystemRoot% : 系統根目錄,預設是C:\WINNT或C:\WINDOWS

* %SystemDirectory% : 系統目錄,預設是C:\WINNT\System32或C:\WINDOWS\System32

* %WinDir% : Windows目錄,預設是C:\WINNT或C:\WINDOWS

* %ProgramFiles% : 應用程式目錄,預設是C:\Program Files

* %Temp%、%Tmp% : 暫存檔目錄 %HomeDrive% : 使用者目錄的磁碟機

* %HomePath% : 使用者家目錄

(以上環境變數可以『檔案總管』試之,或在DOS視窗以echo指令顯示其值;以下的環境變數只能以DOS視窗以echo指令顯示其值)

* %OS% : 作業系統名稱,其值固定為Windows_NT

* %UserDomain% : 包含使用者帳號的網域名稱,或者電腦名稱

* %UserName% : 使用者帳號名稱

簡單的應用

想快速切換到暫存檔目錄,然後刪除裡面的垃圾檔案嗎?(最好是在開機之初)以上述方式將%Temp%或%Tmp%輸入到『檔案總管』的『網址』列,即可切換到暫存檔目錄,接著就能刪除裡面的檔案了。

Windows環境變數列表

每部電腦的環境變數大致相同,但也可能會有若干差異,這是因為安裝的軟體或使用者可能自行設定了環境變數;在『命令提示字元』視窗利用set指令,就能列出完整的環境變數。

除了上面提及了若干,以下再補述其他環境變數;這些環境變數可以『檔案總管』試之,或在DOS視窗以echo指令顯示其值 :

* %ALLUSERSPROFILE% : All Users設定檔的資料夾位置。

* %APPDATA% : 目前使用者的Application Data資料夾位置。

* %CD% : 目前的工作資料夾。

* %CLIENTNAME% : 目前使用者的NETBIOS電腦名稱。

* %CMDCMDLINE% : 處理目前命令提示字元視窗命令的cmd.exe的完整路徑。

* %CMDEXTVERSION% : 目前Command Processor Extensions的版本。

* %CommonProgramFiles% : Common Files資料夾的路徑。

* %COMPUTERNAME% : 電腦名稱。

* %COMSPEC%: : 命令提示字元視窗的解譯程式路徑,通常與%CMDCMDLINE%相同。

* %DATE% : 目前的系統日期。

* %ERRORLEVEL% : 最近執行過的命令的錯誤碼;非零的值表示發生過的錯誤碼。

* %HomeDrive% : 使用者目錄的磁碟機。

* %HomePath% : 使用者家目錄。

* %HOMESHARE% : 目前使用者共用資料夾的網路路徑。

* %LOGONSEVER% : 目前使用者所登入的網路控制器名稱。

* %NUMBER_OF_PROCESSORS% : 電腦的處理器數量。

* %OS% : 作業系統名稱,其值固定為Windows_NT。

* %Path% : 執行檔的搜尋路徑。

* %PATHEXT% : 作業系統是為執行檔的副檔名。

* %PROCESSOR_ARCHITECTURE% : 處理器的架構名稱,例如x86。

* %PROCESSOR_IDENTFIER% : 說明處理器的文字(不一定會有此環境變數)。

* %PROCESSOR_LEVEL% : 處理器的model number。

* %PROCESSOR_REVISION% : 處理器的revision number。

* %ProgramFiles% : 應用程式目錄,預設是C:\Program Files。

* %PROMPT% : 目前解譯程式的命令提示字串。

* %RANDOM% : 顯示0到32767之間的十進位整數亂數。

* %SESSIONNAME% : 連上終端伺服器的session names。

* %SystemDrive% : 系統磁碟機,預設是C:。

* %SystemRoot% : 系統根目錄,預設是C:\WINNT或C:\WINDOWS。

* %SystemDirectory% : 系統目錄,預設是C:\WINNT\System32或C:\WINDOWS\System32。

* %Temp%、%Tmp% : 暫存檔目錄。

* %TIME% : 目前的系統時間。

* %UserDomain% : 包含使用者帳號的網域名稱,或者電腦名稱。

* %UserName% : 使用者帳號名稱。

* %USERPROFILE% : 目前使用者的設定檔路徑。

* %WinDir% : Windows目錄,預設是C:\WINNT或C:\WINDOWS。