SQL Server 2012:T-SQL 程式碼片段
SQL Server 2012 中的程式碼片段基本上是可加速建置資料庫陳述式作業的範本。
Saleem Hakani
想像一下一系列命令創建一個觸發器、 表、 預存程序或甚至一條 Select 語句時,您總是使用。 現在,想像一下擁有所有這些命令建立並可供使用。 您可以大大減少時間和您必須編寫 SQL 伺服器到 2012 年使用新的 T-SQL 程式碼片段的代碼的數量。
T-SQL 代碼片斷讓你快速生成 T-SQL 語句而無需記住這些命令或其語法。 您可以使用此功能來説明減少開發時間並提高您的開發人員和管理員的生產效率。
在 SQL 伺服器 2012 年段範本基於 XML 與預定義的欄位和值。 當您使用 T-SQL 程式碼片段時,突出顯示這些欄位,您可以通過每個欄位選項卡並更改為所需值。
代碼片斷進行分類的易用性。 您可以查看和選擇基於類別的各段。 SQL 伺服器 2012年介紹了三種類型的代碼片斷:
- **預設程式碼片段 (或擴展程式碼片段):**這些代碼範本,可以快速插入到您的 T-SQL 代碼創建表、 存儲的過程、 觸發器等時的各種 T-SQL 命令。
- **環繞聲片段:**這些都是代碼範本説明您實施代碼構造如開始結束,如果同時,等等。
- **自訂的程式碼片段:**您可以使用代碼片斷功能表中創建自己的自訂程式碼片段將出現。
創建自訂的程式碼片段
讓我們看看如何創建自訂的程式碼片段,並將其添加到代碼片斷功能表中。 創建和使用程式碼片段是一個三步過程:
- 創建使用 XML 程式碼片段
- 註冊的 SQL 伺服器管理工作室 (SSMS) 的程式碼片段
- 使用查詢編輯器時調用該程式碼片段
預設情況下,所有 T-SQL 程式碼片段都存儲在以下資料夾中,並保存為.snippet 檔:
或 java 命令 Files\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SQL\Snippets\1033
第 1 步。 用 XML 創建 T-SQL 程式碼片段檔
這裡是您可以使用編寫的任何表的 Select 語句的程式碼片段 (也會讓您可以為列上平等檢查使用 CASE 語句):
CASE_END.SNIPPET File <?xml version="1.0" encoding="utf-8" ?> <CodeSnippets xmlns="https://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>Case-End</Title> <Description> Insert Case...End Construct. </Description> <Author> Saleem Hakani (Microsoft Corporation) </Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Code Language="SQL"> <![CDATA[ Select <Column_Name1>, <Column_Name2>, <Column_Name3>, <Column_Name4>= CASE <Column_Name4> WHEN '<value>' THEN '<Result>' WHEN '<value>' THEN '<Result>' WHEN '<value>' THEN '<Result>' WHEN '<value>' THEN '<Result>' ELSE 'Value not found' END, <Column_Name5>, <Column_Name6> From <Table_Name> Go ]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
第 2 步。 短程中註冊該程式碼片段
一旦創建了該檔,使用程式碼片段管理器註冊的短程的程式碼片段。 可以添加基於程式碼片段類別的一個新的資料夾,或者將單個片段導入到我的程式碼片段的資料夾。
要添加的程式碼片段的資料夾:
- 發射短程
- 從功能表中選擇工具,然後按一下程式碼片段管理器啟動程式碼片段管理器
- 按一下"添加" 按鈕
- 流覽到包含 CASE_END 的資料夾。程式碼片段檔,然後按一下選擇資料夾按鈕
下一步是向短程導入中的程式碼片段:
- 發射短程
- 從功能表中選擇工具,然後按一下程式碼片段管理器
- 按一下底部的導入按鈕
- 流覽到包含 CASE_END.snippet 檔的資料夾並選擇 CASE_End.snippet 檔,然後按一下打開按鈕
第 3 步。 調用或插入從查詢編輯器的 T-SQL 程式碼片段
您現在可以從查詢編輯器調用 CASE_END,您可以調用具有快捷方式鍵按下 CTRL + K + X 的程式碼片段。 然後選擇類別資料夾中,您已經存儲程式碼片段。 您還可以在查詢編輯器中的內容功能表按右鍵並選擇插入程式碼片段。
也可以通過按右鍵查詢編輯器中的內容功能表來調用程式碼片段。 這將會給您的程式碼片段的各種選項。
使用這些步驟,可以創建 T-SQL 代碼片斷並與短程註冊它們。 也可以創建複雜的程式碼片段的各項常規任務,並使您的生活管理 SQL Server 要容易得多。
程式碼片段的解決方案
想像一下你是開發人員或資料庫管理員為您的伺服器的安全負責。 您可能會在 SQL Server 中,有 500 登錄,但你不知道這些 500 登錄分配到其中的伺服器級別角色。 如果你要單獨檢查每個登錄屬性,它將會數小時甚至幾天。 具有自動化的方法來快速檢查所有伺服器級別登錄將時間縮短到代碼,以及提高代碼準確性和開發人員和 DBA 生產力。
這裡是會讓你快速查看伺服器級別登錄伺服器級別角色和許可權的程式碼片段。 此 SecuritySPY 程式碼片段清單中標識伺服器級別登錄和他們分配到的角色:
<?xml version="1.0" encoding="utf-8" ?> <CodeSnippets xmlns="https://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>SQL_SecuritySPY - By Saleem Hakani (Microsoft Corporation)</Title> <Description> Shortcut for checking SQL Server Server Role Permissions </Description> <Author> Saleem Hakani (Microsoft Corporation) </Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Code Language="SQL"> <![CDATA[ --Author: Saleem Hakani (Microsoft Corporation) --Website: Http://sqlcommunity.com Select 'Login Name'= Substring(upper(SUSER_SNAME(SID)),1,40), 'Login Create Date'=Convert(Varchar(24),CreateDate), 'System Admin' = Case SysAdmin When 1 then 'YES (VERIFY)' When 0 then 'NO' End, 'Security Admin' = Case SecurityAdmin When 1 then 'YES (VERIFY)' When 0 then 'NO' End, 'Server Admin' = Case ServerAdmin When 1 then 'YES (VERIFY)' When 0 then 'NO' End, 'Setup Admin' = Case SetupAdmin When 1 then 'YES (VERIFY)' When 0 then 'NO' End, 'Process Admin' = Case ProcessAdmin When 1 then 'YES (VERIFY)' When 0 then 'NO' End, 'Disk Admin' = Case DiskAdmin When 1 then 'YES (VERIFY)' When 0 then 'NO' End, 'Database Creator' = Case DBCreator When 1 then 'YES (VERIFY)' When 0 then 'NO' End from Master.Sys.SysLogins order by 3 desc Go ]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
現在,您有一個稱為 SecuritySPY 的代碼片斷。 您可以調用此具有快捷方式鍵從查詢編輯器,如前面說過。 此外可以在查詢編輯器中的內容功能表上用滑鼠右鍵按一下並選擇插入程式碼片段。
創建和使用程式碼片段可以簡化您的 SQL 伺服器管理工作。 您可隨時有少數幾個預定義的命令使您不必再一次次地做同樣的事情。
Saleem Hakani 是在微軟與超過 18 年的主要設計師。 他自 1992 年以來曾與 SQL Server,並擔任過無數大型 Microsoft 服務工程師和建築師過去七年,包括 Hotmail,Bing 和 MSN。 Hakani 為 Microsoft 員工,導致全世界的 SQL 伺服器社區,而是為各種 Microsoft 事件,包括 TechReady、 SQLFEST、 SQL 學校和 SQLPASS 技術簡報者。