Visual Studio Code: 利用 MSSQL 插件创建数据库 IDE
盡管面對繁重的 .NET 開發任務 Visual Studio 仍是我的首選 IDE,但我卻已深深迷戀上 Visual Studio Code (VS Code),無論我使用的語言是 C#、JavaScript 還是 Node,也無論我使用的操作系統是 Windows 還是 macOS。
當然,VS Code 及其大量插件還支持其他許多語言和框架,但這些是我當前使用的工具集。
不止我一人對 VS Code 迷戀不已。在 2017 年 3 月發布 Visual Studio 2017 期間,Microsoft 就宣布了 VS Code 每月有 130 萬名活躍用戶。最棒的地方在于,與所有跨平臺工具一樣,團隊中的每位成員都可以選擇自己常用的操作系統,但同時所有成員仍可使用相同的編碼工具。
還有就是始終都會涉及到的數據。多年來,我一直僅使用 SQL Server 和從事 Windows 應用編碼。但過去幾年讓我大開眼界,不僅出現了新的 IDE (VS Code),還出現了新的數據庫和平臺(就像我正在 MacBook Pro 中鍵入這句話一樣)。
我接觸 VS Code 始于我對 Node.js 的嘗試,本專欄見證了這一切。最初是在 Windows 上進行嘗試。但因為 VS Code 是跨平臺工具(使用 Electron 生成),所以我最終在編寫同一代碼時來回切換平臺:有時在 Windows 中,有時在 macOS 中(將 GitHub 用作通用標準)。由于有 C# 插件和跨平臺 .NET Core,我最終超越了 Node.js,使用 EF Core 在兩個環境中編寫 .NET Core 應用。
使用 Visual Studio 時,我非常依賴內置的 SQL Server Data Tools 和 SQL CE/SQLite Toolbox 插件來探索我的應用要創建的大部分數據。不過,使用 VS Code 時,我需要借助某種外部力量來探索數據。將 Windows 和超輕量級 VS Code 結合使用時,絕不能打開根本就不是輕量級的 SQL Server Management Studio。
對于其他數據庫,無論是在 Windows 還是 Mac 計算機上,我還在一直在使用 JetBrains DataGrip (jetbrains.com/datagrip)。這一款跨平臺數據庫工具,支持許多數據庫。
不過,隨著 VS Code 插件不斷增多(當我在 2017 年 4 月下旬撰寫本文時,僅略低于 3,000),許多用于與數據存儲進行交互的插件現已發布。我用過兩個,分別是來自 SQL Server 團隊的 mssql 插件 (bit.ly/2gb2ICf),以及適用于 SQLite 和 PostgreSQL 的 vscode-database 插件 (bit.ly/2mh8nYF)。
使用這些插件,可以針對數據庫編寫和執行 SQL。我的 Pluralsight 課程“Entity Framework Core: 入門”中對這兩個插件進行了演示。 還有其他與數據相關的插件。例如,用于與 Azure Data Lake(也來自 Microsoft)、Redis 和 SalesForce 數據存儲進行交互。其中一些插件仍處于預覽階段,包括 mssql 插件。
在本文中,我將介紹一些與使用 mssql 插件相關的基礎知識。起初我是打算 mssql 和 vscode-database 兩個都寫的,但 mssql 的功能實在是太豐富了,它的探索過程充滿了樂趣,對它的介紹很快就占滿了本專欄的篇幅。無論是在 Windows、macOS 還是在 Linux 上使用 mssql,都不會產生任何影響。
使用 mssql 插件,可以與各種 SQL Server 數據庫進行交互: Microsoft SQL Server、Azure SQL 數據庫和 SQL 數據倉庫。我碰巧使用的是 MacBook,我將連接外部 SQL Server。
你可能會注意到,SQL Server 現在是在 Linux 上運行,這難道不奇妙嗎? 也就是說,可以啟動運行 SQL Server 的 Docker 容器。雖然在本文中我不會這樣做,但我對此撰寫了一篇博文 (bit.ly/2qaev9r)。
而我在本文中要做的是,連接云中的 Azure SQL Server 數據庫。這是一個有力的提醒。也就是說,不必是 Windows 開發者/管理員或 C# 開發者,也可以利用 SQL Server。可以在 Azure 門戶上管理數據庫,并能通過任意類型的應用連接數據庫。
那么,假設應用是 PHP,要使用適用于 VS Code 的 PHP 插件,并與 Azure SQL Server 數據庫進行通信。?
我使用免費的 Azure 帳戶和 Visual Studio 訂閱隨附的信用額度,以 AdventureWorks 示例為依據創建了一個 Azure SQL 數據庫。有關如何執行此操作的文檔,請訪問?bit.ly/2o2IDTy。
回到 VS Code,單擊 VS Code 活動欄上的插件圖標,篩選出 mssql,然后單擊它對應的“安裝”按鈕,便可安裝 mssql 插件。
安裝完成時,系統會提示重載 VS Code。不過,請注意,在使用此插件的命令之一前,系統會延遲安裝它的部分組件。請注意,對于 macOS,需要安裝 OpenSSL。有關詳細信息,請單擊前面提供的 mssql 文檔鏈接。
除了已安裝的查詢執行引擎外,mssql 還在 VS Code 命令面板中添加了大量命令。最好先連接數據庫,盡管其他功能也會提示連接(如果尚未連接的話)。
按 F1(Ctrl/Command+Shift+P,如果使用的是不含功能鍵的有趣鍵盤之一的話)打開面板,鍵入“MS SQL”,篩選出所有 mssql 命令。如果沒有其他任何插件為命令提供 SQL 關鍵字,SQL 會直接解決此問題。
我喜歡的是,甚至可以使用“入門指南”命令獲取幫助文件。此外,還可以存儲不同的連接,然后使用“管理連接配置文件”功能輕松進行連接。
與 mssql 進行交互的最簡便方法是,打開文件進行編輯,并確保 VS Code 知道你正在編輯 SQL。借助新增的查詢命令,無論打開的是文件夾還是項目,都可以這樣做。這會創建 SQLQuery.sql 文件,并且 sql 插件會讓 VS Code 切換到 mssql 編輯器。
當前編輯器顯示在 VS Code 的右下角,這因文件擴展名而異,旨在提供適當的 IntelliSense 和插件提供的其他相關功能。可以根據需要單擊顯示的內容進行更改。mssql 編輯器不僅會有助于編寫 TSQL,還知道如何執行查詢和插件定義的其他任務。
在編輯器中打開 SQL 文件后,選擇“MS SQL”: 從命令面板進行連接將會列出已創建的現有連接配置文件,并允許新建配置文件。選擇“創建連接配置文件”,然后系統會提示輸入連接字符串的各個關鍵元素。
例如,第一個提示要求提供服務器名稱,如圖 1?所示。由于我的 SQL Azure 數據庫位于 thedatafarmsqlerver.database.windows.net 服務器上,因此我將輸入此名稱。
?圖 1:使用 mssql 插件連接 SQL 數據庫
接下來,系統會提示輸入數據庫名稱、登錄名和密碼以及可選的配置文件名。順便說一下,“管理連接配置文件”也可以轉到這一步,因為它具有“創建”菜單選項。
填寫連接信息且成功連接后,配置文件便會保存到 VS Code 設置文件中。對于版本 0.3,如果連接失敗,將不會存儲配置文件;但此體驗即將發生變化。從 VS Code 菜單轉到“首選項和設置”或按 Ctrl/Command+,(逗號)擊鍵組合,可查看存儲的配置文件。下面的示例展示了連接配置文件:
在設置中存儲配置文件后,可以視需要連接 AzureAWSample 或存儲的其他配置文件。
連接后,便可以開始編寫并執行 TSQL。執行此操作的最簡單方法是,在編輯器中打開具有 SQL 擴展名的文件。正如之前所提到的,這會迫使 SQL 編輯器功能生效,其中一項非常棒的功能就是內置 TSQL 代碼片段。
首先,在編輯器窗口中鍵入“sql”,IntelliSense 會列出內置代碼片段,如圖 2?所示。
圖 2:mssql 插件提供的 TSQL 代碼片段
可以看到,mssql 會執行允許使用的任何有效 TSQL,并不僅限查詢現有數據。我要列出數據庫或選定數據庫中的表和視圖,以驗證我連接的數據庫是否正確。ListTablesAndViews 代碼片段非常適合執行此操作。通常,我都不得不使用 Google 和必應搜索諸如此類的 TSQL,所以我非常感謝有此代碼片段。
按 Ctrl/Command+Shift+E 可執行此命令。也可以選擇文本,然后右鍵單擊調出上下文菜單,其中包括“執行”選項。
此時,包含響應的結果窗格會打開,如圖 3?所示。
圖 3:架構查詢的結果
在右上角,你會注意到兩個小圖標。第一個圖標用于將結果另存為 CSV 文本文件。第二個圖標用于將結果另存為 JSON 格式。讓我們來執行用于獲取客戶數據的查詢,看看結果如何,然后將結果另存為 JSON 格式。
通過我面前的表列表,我可以開始鍵入查詢。如圖 4?所示,IntelliSense 啟動,并且了解數據庫架構。
圖 4:IntelliSense 讀取架構并幫助生成 TSQL
我將 select 語句修改為獲取 SalesLT.Customer 中的三個列。然后,我可以突出顯示此語句,并再次使用 Ctrl/Command+Shift+E 鍵盤快捷方式直接執行此查詢。
與 SQL Server Management Studio 一樣,我可以執行一個或多個語句,也可以查看一個或多個響應結果集。
結果顯示在網格中,如圖 5?所示。可以突出顯示一個或多個行列組合,并單擊 CSV 或 JSON 圖標,然后系統會提示輸入要保存的文件名。通過右鍵單擊網格,可以輕松地使用上下文菜單選擇所有數據。
圖 5:客戶數據查詢結果
當系統提示輸入文件名時,還會顯示當前的文件夾路徑。如果這就是所需的文件保存位置,則不必重新鍵入路徑。只需鍵入文件名,即可將文件保存到此文件夾中。在最初的幾次嘗試期間,我并未意識到這一點,所以我從自己的錯誤中汲取了教訓。
我僅選擇了查詢預測的客戶數據的第一行,然后使用“保存為 JSON”圖標,同時指定了文件名。下面展示了輸出到我的文件中的 JSON:
請注意,可以將自己的代碼片段輕松添加到 VS Code 中。讓我們來創建一個用于列出存儲過程和函數的代碼片段。
首先,轉到“首選項和用戶代碼片段”。你會發現,mssql 插件添加了一個 SQL 代碼片段模板。選擇此模板,將會打開一個空白模板。添加更多代碼片段時,將繼續使用此文件。
此外,如果已創建一些代碼片段要進行共享(還有可能是發現了 bug 或對 mssql 有其他想法),由于這是一個開放源代碼插件,因此可以轉到?github.com/Microsoft/vscode-mssql,提交拉取請求或問題,從而參與進來。
在長時間使用 Google 和必應進行搜索并測試各種想法后,我創建了下列代碼片段,用于列出目標數據庫中的所有存儲過程和函數:
現在,當我在編輯器窗口中鍵入“sql”時,就可以使用 sqlListStoreProcedures 選項了。對目標數據庫執行此命令的結果如下:
通過右鍵單擊結果網格并選擇“連同標題一起復制”選項,我可以共享此輸出。
正如午夜電視廣告所說,“且慢! 還有更多精彩內容!” 編輯器窗口也有上下文菜單(見圖 6)。
圖 6:編輯器窗口上下文菜單
恕我直言,其中最有趣的項目是“轉到定義”和“速覽定義”。如果在編輯窗口中選擇表名稱(例如,圖 5?所示命令中的“Customer”),這些命令會顯示客戶表的 CREATE 腳本。
mssql 插件在不斷發展,我期待將來有更多更新。我在這里分享的版本 0.3.0 仍處于預覽階段。如果已在 Visual Studio Code 上安裝此版本,將會收到更新通知。若要掌握和參與它的發展歷程,請訪問 GitHub 網站 (aka.ms/mssql-marketplace)。
Julie Lerman?住在佛蒙特州的丘陵地區,擔任 Microsoft 區域主管、Microsoft MVP、軟件團隊導師和顧問。可以在全球的用戶組和會議中看到她對數據訪問和其他主題的介紹。她的博客地址是?thedatafarm.com/blog。她是“Entity Framework 編程”及其 Code First 和 DbContext 版本(全都出版自 O’Reilly Media)的作者。通過 Twitter 關注她:@julielerman?并在?juliel.me/PS-Videos?上觀看其 Pluralsight 課程。
衷心感謝以下 Microsoft 技術專家對本文的審閱: Kevin Cunnane、Eric Kang 和 Sanjay Nagamangalam
原文地址:https://msdn.microsoft.com/zh-cn/magazine/mt809115
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的Visual Studio Code: 利用 MSSQL 插件创建数据库 IDE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lldb 调试 linux下 .net
- 下一篇: ASP.NET Core 开源论坛项目