﻿# 善用 SQL Server Management Studio 選項設定DB作業環境

我們每天與 SQL Server 資料庫為伍，絕對不能跟 Management Studio 不熟，就像我們一般日常做程式開發時一樣，開發工具的「選項」設定多少都會調整一下方便我們工作。但是工作環境切換到 Management Studio 之後我卻發現許多人不知道要善用 Management Studio 的 \[選項\] 設定，今天我就來分享一些我常用的 \[選項\] 設定值 (非預設值)。

**\[環境\] / \[鍵盤\]** → 將常用的 DB 管理作業(預儲程序)設定成快速鍵

![\[環境\] / \[鍵盤\] → 將常用的 DB 管理作業(預儲程序)設定成快速鍵](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/b8feb3a843e05ddf7bc6-image_3.png "[環境] / [鍵盤] → 將常用的 DB 管理作業(預儲程序)設定成快速鍵")

如下圖所示，我之前有寫過一支[在 SQL Server 2005 中取得所有欄位定義的方法(含備註欄位)](/post/2007/11/05/How-to-get-detailed-Data-Dictionary-in-SQL-Server-2005)，我將他轉成預儲程序後，就可以將該預儲程序寫到 **\[環境\] / \[鍵盤\]** 設定來，日後按下 Ctrl + 3 就可以顯示所有 Schema 定義了。

若是一些日常的資料庫維護作業一樣也可以這麼做，像是資料庫重整、重組、備份、還原、切換至單人模式、多人模式、…等等，只要是日常要做的工作都可以利用快速鍵進行。

\------

**\[查詢執行\] / \[SQL Server\] / \[ANSI\]** → 參考自[黑暗執行緒](http://blog.darkthread.net/)的【[小心駛得萬年船--SQL指令保險栓](http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/07/25/safty-lock.aspx)】

![\[查詢執行\] / \[SQL Server\] / \[ANSI\] → 參考自黑暗執行緒的【小心駛得萬年船--SQL指令保險栓】](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/fd706718737e6b3dfc58-image_6.png "[查詢執行] / [SQL Server] / [ANSI] → 參考自黑暗執行緒的【小心駛得萬年船--SQL指令保險栓】")

\------

**\[查詢結果\] / \[SQL Server\] / \[以方格顯示結果\]** → 決定查詢結果的複製或儲存格式

![\[查詢結果\] / \[SQL Server\] / \[以方格顯示結果\] → 決定查詢結果的複製或儲存格式](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/aa2f9d142d3b1a43b866-image_9.png "[查詢結果] / [SQL Server] / [以方格顯示結果] → 決定查詢結果的複製或儲存格式")

這裡有兩個選項設定我覺得非常有意義：

1\. 複製或儲存結果時包含資料行標頭

-   有時後我們為了將查詢結果複製到 Excel 時，預設這個選項並未勾選，在很久以前我不知道這個選項時，我都要複製到 Excel 後再人工將欄位標頭辛苦的再打字一遍上去。但現在只要勾選這個選項，在複製 ( Ctrl + C ) 時剪貼簿中就會包括「資料行標頭」了！
-   如果你需要在 Management Studio 中的**表格之間**複製貼上資料，要特別注意不能勾選此選項，否則貼上資料時會出錯！

2\. 儲存 .csv 結果時將包含清單分隔符號的字串括在引號裡

-   不這樣設定就很有可能讓匯出的 csv 檔格式發生錯亂，建議勾選。

在查詢結果視窗複製或儲存結果的方式如下：

![在查詢結果視窗複製或儲存結果的方式](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2d2725b596eccd7927ef-image_12.png "在查詢結果視窗複製或儲存結果的方式")

\------

**\[指令碼\]** → 設定「產生指令碼」功能的預設選項

 ![\[指令碼\] → 設定「產生指令碼」功能的預設選項](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/93fa283f41951bbf6b8e-image_18.png "[指令碼] → 設定「產生指令碼」功能的預設選項")

有時我們要為資料庫產生指令碼時，在預設的情況下都會漏掉一些重要的物件，像是「觸發程序」、「預設」、「規則」、「索引」等物件，為了避免每次產生都要手動設定這些選項，就可以來這裡設定預設的產生指令碼選項！資料庫產生指令碼的圖示如下：

![資料庫產生指令碼的圖示](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ae922ad705dc21cd10e6-image_21.png "資料庫產生指令碼的圖示")

\------

**\[設計師\] / \[資料庫和資料表設計工具\]** → 在進行資料庫設計時必備的設定選項

![\[設計師\] / \[資料庫和資料表設計工具\] → 在進行資料庫設計時必備的設定選項](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/23ee49210c704abc50ef-image_24.png "[設計師] / [資料庫和資料表設計工具] → 在進行資料庫設計時必備的設定選項")

1\. 自動產生變更指令碼

-   這個選項可謂「非常重要」，因為太多人沒有「產生變更指令碼」的習慣，上線後的資料庫也都手動修改，改完了也不跟開發人員說，很容易就會導致測試機與正式機資料結構不一致的情況！
-   建議所有人都能將此選項打溝，至少比較不會忘記手動按下「產生變更指令碼」的功能，若真的不需要**變更指令碼**你也可以跳過不用儲存。

2\. 圖表選項 / 預設資料表檢視

-   這裡保留預設值即可。但我有時為了資料表設計方便會調整到 \[**自訂**\]，讓整個設計的過程更順暢。
-   有興趣的人可參考我的另一篇文章：[SQL Server Management Studio 表格設計技巧](/post/2008/01/26/SQL-Server-Management-Studio-Table-Design-Tips)

**相關連結**

-   [SQL Server Management Studio 鍵盤快速鍵](http://msdn.microsoft.com/zh-tw/library/ms174205.aspx)
-   [在 SQL Server 2005 中取得所有欄位定義的方法(含備註欄位)](/post/2007/11/05/How-to-get-detailed-Data-Dictionary-in-SQL-Server-2005)
-   [SQL Server Management Studio 表格設計技巧](/post/2008/01/26/SQL-Server-Management-Studio-Table-Design-Tips)
