在實際的數據庫Sqlserver的運維的過程中,很多時候我們需要做到數據的備份操作,可以做到定時備份,也可以進行手動數據庫備份。在實際的過程中,有時候因業務需要備份出完整數據庫,而有時候又因為實際業務只需要影響到一張表或者幾張表,備份整個數據庫未必是最優的方案,此時可采用生成腳本或者Select Into的方式對單表進行備份。DBA在運維過程中備份數據差不多用的就是以上幾種操作方式,下面就詳細說下這幾種備份方式。
(1)數據庫整庫備份
此方式備份數據庫是最完整的,可以將數據庫中所有的對象都備份下來生成個.Bak文件,后續如果出現問題,可以直接通過.bak文件還原數據庫,但備份的耗時會比較長,並且占用磁盤空間會比較大。此方法備份的操作是直接在Sqlserver數據庫管理軟件中選中數據庫,右鍵選擇任務,然后選擇備份,如下圖
然后進入備份界面后選擇備份存放的路徑以及設置好備份文件名稱,點擊確定即可進行備份,如下圖
(2)通過生成腳本的方式單表備份
有時候我們業務系統的更新可能只涉及到一張表或者幾張表,此時可以通過對每個數據表進行單表備份的方式來操作,只備份這幾張涉及到變更操作的數據表。操作的方法為在Sqlserver數據庫管理軟件中選中數據庫,右鍵選擇任務,然后選擇生成腳本,參考方法一中的第一個圖。然后進入生成腳本界面,選擇下一步進入設置界面:
進入設置界面后,選擇特定的數據庫對象,然后再從中選擇你需要備份的數據表,如下圖:
然后點擊下一步,進入存儲路徑以及導出設置界面,保存到文件可以選擇保存為單個文件或者每個對象一個文件。此處關鍵一點記得選擇高級按鈕,在里面設置要編寫腳本的數據類型,否則默認規則導出來的文件中只含有表的架構語句(即創建table的SQL語句),不含有任何表數據。如下圖
選擇高級按鈕后,進入高級設置項,將下拉菜單下拉到最后可以看到一個設置項叫做要編寫腳本的數據的類型。將之設置為架構和數據或者僅限數據。只有這兩種方式導出來的文件中才包含表格中的數據,僅限架構導出來的只是創建table的語句。
設置好上述信息后點擊完成,自動創建備份文件到指定的存儲路徑下,生成的文件是.sql后綴的數據庫SQL文件。
(3)通過Select Into語句將一個表快速備份到一個臨時新表中。
此備份方法是將查找出來的數據快速寫入到指定的備份新表中,自動創建table。
如將A數據庫中的Product表所有數據快速備份到ABackUp數據庫中的Product_0228表中,可使用以下語句操作,直接在新建查詢窗口執行即可。
Select * Into ABackUp.dbo.Product_0228 FROM A.dbo.Product;
執行此語句要求into后面的表在執行之前不存在,存在的話上述語句無法執行。這個Product_0228表格也無需手動處理,上述語句在執行的時候自動創建跟Product表一致的結構。