簡要說明 SQL Server Management Studio 做組態設定時,使用 GUI 和 T-SQL 指令的差異
平常 DBA 或開發人員在做資料庫的設定時,大多都會使用 GUI 工具,像是 SQL Server Management Studio 來做,而通常都可以做到一些 T-SQL 做不到的事 (像是把表格內欄位的順序對調),不過其實在多數的情況下,使用 T-SQL 會比用 GUI 工具更有效率,例如底下的三件事:
1. 設定存取權限:
如果要用 GUI 來設定元件的存取權限的話,用 GUI 做就好 4-5 個步驟,物件一多的話,那可能會做到爆,但用 T-SQL,就只要用一行 DCL (Data Control Language) 就行了:
GRANT [permission] ON [database_object] TO [login]
Example: GRANT SELECT ON fn_myFunction TO myLogin -- 設定 myLogin 帳戶具有 fn_myFunction 這個 TVF (表格值型使用者函數) 的 SELECT 權限。
2. 設定孤兒使用者的再連結:
通常在資料庫部署時,很多開發人員都會使用 Detach/Attach 的方式來做,不過這樣會有個問題,原先在資料庫中設定的登入會無法和新的 SQL Server 中的登入連結在一起 (就算使用者名稱一樣也不行,因為內部 ID 不同),這時如果要處理這種孤兒使用者問題的話,靠 GUI 會做到爆,尤其這個使用者有很多的權限設定時。
但用 T-SQL,就只要一行:
EXEC sp_change_users_login 'UPDATE_ONE', [資料庫 login 名稱], [新 SQL Server 上的 login 名稱]
即可搞定所有的事情。
3. 壓縮記錄檔:
這個應該是 DBA 最常做的工作了,在做完資料庫的完整備份後,就可以動手清空記錄檔,但清空還不算,它只是把記錄都用空資料標記而已,空間不會釋放,只有利用壓縮的方式才會被釋放,不過這個工作如果要用 GUI 來做的話,也是要數個步驟,用 T-SQL 的話,只要兩個指令即可:
- BACKUP LOG [資料庫名稱] WITH TRUNCATE_ONLY
- DBCC SHRINKFILE ([交易記錄檔的邏輯名稱], [你想要壓到的大小,單位是 MB])