1.數據庫快照
數據庫快照可以理解為保存某個數據庫在快照那一瞬間的狀態。快照和備份原理有所差異,但是功能有一點相同那就是可以將數據還原為備份的那個時刻.快照的原理是新建一個數據庫指針,在原數據庫沒有變化的情況下快照是不占用空間的,而數據庫發生了變化,那么在變化前,被修改的數據頁會先復制一份到快照文件中,然后再對原數據頁進行修改.顯然這樣做的好處就是比備份數據庫占用空間小.快照是只讀的,大家也可以直接在SQL語句中把他當數據庫用:
|
與此同時也可以實現數據還原功能,在導入數據的時候把數據源選成快照就可以了。
快照的建立似乎不可以在ManagementStudio通過點鼠標完成,只有通過SQL語句來做,如下例:
|
這兒snap2當然就是快照名,而name=DB1這兒的DB1是指要被快照的數據庫的數據文件邏輯名稱.
一個數據庫的邏輯名稱可以通過右鍵某數據庫->屬性,"文件"選項卡中可以看到.
filename='...'這是指快照文件放在哪個位置.最后那個DB1就是指要被快照的數據庫了.
注意:數據庫被快照以后是無法刪除的.要刪除數據庫必須先把該數據庫的所有快照刪除.
2.自定義函數
在數據庫->可編程性->函數->標量值函數中可以定義用戶自己的函數.
右鍵"新建標量值函數"后會調用新建函數的模版,按Ctrl+Shift+M可以為模版中各參數賦值.然后在Begin End中間寫入自己的SQL語句.
比如我們有一個通過生日計算年齡的函數GetAge();以下是寫出來的代碼:
|
在編寫完代碼后,我們直接按F5運行就可以將編寫的函數保存到數據庫中.調用自定義函數也很簡單,和一般的函數用法一樣不過就是前面必須跟架構名,也就是說要寫成dbo.GetAge,而不能直接寫GetAge。
下面讓我們新建一個查詢來測試一下:
|
返回22,函數編寫成功。
3.計算列
大家需要了解的是,在數據庫表設計的時候,有一個比較特殊的列不填寫任何設計類型,用戶不可以改變該列的值,它就是計算列。
計算列的值是通過一定的函數公式等以另一個或多個列的值為輸入值,計算出結果。
打開表或在新建表的時候,在列屬性下面就有"計算所得的列規范"項,在"公式"中填入需要的公式便完成計算列的設計.
比如我們有一個表,表中有字段Birthday(datetime類型),那么我們再新建一個列為Age,在公式中填入(isnull([dbo].[GetAge]([Birthday]),(0)))然后保存便可以了。這個時候打開表中數據就可以看到Age字段已經全部顯示出來了.
注:在計算列中是不能直接寫比較復雜的邏輯的,一般需要結合自定義函數和計算列,這樣就可以完成各種復雜的邏輯了。
新聞熱點
疑難解答