[讀書筆記] 「Administering SQL Server」 內容筆記

[讀書筆記] "Administering SQL Server" 內容筆記

早上看了一下朋友有 Po 一份電子書,再查看問題的時候利用時間看了一下,整份文件並不大,可以很快的就看完了,其中裡面有一些不錯的說明文章和相關連結的網址,有需要的朋友可以參考以下的網址下載查看 ( 電子書的下載點 : http://sqlbooks.aartemiou.com/books/administration/ )

 


 

● 備份資料庫長久下來,要是沒有清除備份和還原紀錄的話,可能會造成 msdb 資料庫放太多不必要的歷史資訊,可透過 msdb 資料庫下面的 sp_delete_backuphistory 的預存命令來指定清除某一天之前的所有歷史紀錄。

 

● 因為 Backup 指定路徑不能使用 UNC Name 來指定網路上的分享目錄,但可透過 sp_addumpdevice 預存命令,先指定 Backup Device 到特定的 UNC 目錄後,在指定備份到 Device 上就可以了。

 

● 如果要取得資料庫的實體檔案的位置和容量,可以透過 sys.database_files 或者是 sys.master_files。前者是取得目前連線的資料庫的檔案資訊,而後者是取得所有 SQL Server 上的資料庫實體檔案資訊。

 

● 在 SQL Server 內有兩個特別的 Stored Procedure : sp_MSforeachtablesp_MSforeachdb,當有需要針對資料庫內所有的 Table 下指令,或者是針對所有資料庫下命令的時候,則可以搭配這兩個預存命令來做處理。

 

● 從 SQL Server 2008 之後,當需要同時管理多台 SQL Server 的時候,可透過 Policy-Based Management 的方式,來統一做相關的稽核限制,例如物件命名、禁止使用某些功能、允許使用某些指令等功能。他可以先在一台上設定好之後,再指定某些主機要套用這些原則。

 

● 從 SQL Server 2012 之後,可透過 Contained Databases 的方式,將使用者帳號存在該資料庫內,而非存在 master 資料庫,因此當使用該帳號連接資料庫的時候,一定要指定連接資料庫名稱,並且不能跨資料庫存取。如果有需要啟用 Contained Databases ,則必須在 Instance 下設定支援,然後在在需要的資料庫下指令調整。如果已經原本就有建立好帳號在 master 資料庫下,則可以透過 sp_migrate_user_to_contained 的預存命令,將特定帳號移轉到 Contained Databases 之下。

-- 指定 Instance 支援 Contained Database
sp_configure 'contained database authentication', 1;
GO
 
-- 設定特定資料庫支援 Contained Database
ALTER DATABASE [A] SET CONTAINMENT = PARTIAL ;
GO

-- 建立帳號密碼
USE [A]
GO
CREATE USER ContUser1 WITHPASSWORD=N'secure1$',DEFAULT_SCHEMA=[dbo]

 

● 從 SQL 2008 版本開始,Enterprise 版本支援透明資料加密 ( TDE ) ,當資料庫選擇加密之後,既有程式可以不用做任何的修改,由資料庫負責來做資料加解密的處理,但會造成資料庫在使用時, CPU 的使用率將會比沒有使用加密的增加不少。另外原本沒有加密的時候,資料庫在備份的時候,可以透過備份壓縮縮減備份檔案的大小,但當設定資料庫加密之後,則壓縮就會顯得沒有用途,幾乎會沒有任何的壓縮效果。另外要當使用 TDE 之後,要特別注意簽章的保存,避免資料庫損毀的時候,無法從備份檔案內進行還原。