連接到 Azure SQL 數據庫:全面指南

Azure SQL Database 是一個管理 SQL 資料庫的服務,開發人員和管理員不需要執行安裝 SQL Server 或花費數小時設定故障轉移叢集等繁瑣的任務。

微軟 Azure 已經簡化了設置資料庫層的繁重工作,所以只需要連接到資料庫,這篇文章將介紹一些不同的方法來連接到 Azure SQL 資料庫。

先決條件

如果你想要連接到 Azure SQL 資料庫,你需要提前滿足一些先決條件。

  1. 一個 Azure 帳戶,或者能夠訪問一個 Azure 帳戶
  2. 一個 Azure SQL 資料庫(如果你愿意,你可以使用自己的,但是我將使用範例)。
  3. A Windows 10, Mac OS, or Linux laptop or desktop with PowerShell, Visual Studio Code and SQL Server Management Studio installed. The screenshots are all from Windows 10.

連接到 Azure SQL 有數十種不同的方法,可惜我無法一一介紹,但本文將涵蓋以下幾種方法:

  • Azure 入口網站
  • SQL Server Management Studio
  • Visual Studio Code
  • PowerShell

配置 Azure SQL 資料庫

在開始之前,您必須確保有可用的資料庫並且可以連接到它。根據快速入門文件的指示,我已經設置了一個名為ata-demo的示範資料庫。這個資料庫有一個SQL管理員(sa)使用者AtaAdmin,密碼是Admin123

我使用的密碼並不是最安全的,但對於示範目的足夠了。請遵循最佳實踐,使用安全的密碼來設置QA或生產環境中的類似資料庫!

接下來,您需要登錄Azure Portal,以確保您的設備可以連接到資料庫。您可以將其連接到現有的Azure虛擬網路,或定義可以訪問資料庫的IP範圍,這是下面的示範中所做的。轉到您要連接的SQL資料庫的資源頁面,尋找一個名為設定伺服器防火牆的選項。

Setting an Azure SQL Server firewall rule

進入此頁面後,您可以選擇一個IP範圍。此頁面還顯示您設備的IP地址,這是我將在示範中使用的。但在實際應用中,這將是您應用程序層的子網範圍或虛擬網路。完成這些步驟後,您就可以繼續進行第一個示範了!

使用Azure Portal連接到Azure SQL資料庫

由於您已經在Azure Portal上,您可以在這裡進行第一個示範。

使用左側的導航菜單返回到概述頁面,然後尋找查詢編輯器。一旦進入該頁面,您將被提示使用Microsoft帳戶或SQL憑據進行登錄。使用之前設置的SA帳戶進行登錄(AtaAdmin:Admin123)。

登錄後,您將在查詢編輯器左側看到一個面板,其中列出了表、視圖和存儲過程。截至本文撰寫時,此界面中沒有右鍵功能,因此與數據庫交互的唯一選項是使用查詢編輯器。如果您使用的是示例數據庫,可以使用下面的示例查詢。

SELECT pc.Name as CategoryName, p.name as ProductName
FROM [SalesLT].[ProductCategory] pc
JOIN [SalesLT].[Product] p
ON pc.productcategoryid = p.productcategoryid;
Querying the Azure SQL server database

現在您已經知道防火牆規則已經設置完成,我們可以開始嘗試從其他平台進行連接。

使用SQL Server Management Studio (SSMS)連接到Azure SQL數據庫

迄今為止,最強大的管理SQL數據庫服務器的工具是SSMS。通過長期使用和經過實戰考驗,這已經成為SQL Server數據庫管理員的首選工具已有十多年的時間。

SSMS也完全兼容Azure SQL數據庫。如果您尚未安裝它,可以從Microsoft官方網站下載最新版本或使用軟體包管理器進行安裝

返回到您的SQL数据库资源页面,复制服务器名称。服务器名称将是<Your Database Name>.database.windows.net

打开SQL Server Management Studio,使用SQL Server身份验证和之前设置的SA用户连接到数据库名称。如果您尚未设置防火墙规则,SSMS将提示您使用Azure帐户进行身份验证。

现在,您已经通过身份验证到数据库并设置了防火墙,可以通过转到<ServerName> -> Databases,右键单击数据库,然后选择New Query来运行您之前使用的查询,并观看魔术发生。

Connecting to an Azure SQL Database with SSMS

使用Visual Studio Code (Code)连接到Azure SQL数据库

要使用Visual Studio Code连接到Azure SQL数据库,您需要安装Visual Studio Code的mssql扩展。安装完成后,按下Ctrl + Shift + P以打开对话框,然后搜索MS SQL: Connect

Using the MSSql extension in Visual Studio Code

选择后,Visual Studio Code将通过向导引导您输入要连接的数据库的信息。您将被提示输入服务器名称、数据库名称、用户名和密码。一旦您提供了所有这些信息,它将保存到连接配置文件中,可以用于执行针对该数据库的查询。

在編輯窗口中輸入要在數據庫中運行的SQL查詢。打開查詢後,按下Ctrl + Shift + E。然後將提示您選擇要使用哪個連接運行該查詢。選擇您創建的連接,Code將在不離開屏幕的情況下打開另一個面板以顯示結果!

Connecting to mySql in Visual Studio Code

使用PowerShell連接到Azure SQL數據庫

要使用PowerShell連接到Azure SQL數據庫,您需要安裝AzPowerShell模塊。您可以在PowerShell庫中找到此模塊。通過運行命令Install-Module Az來下載並安裝該模塊。在撰寫本文時,該模塊的版本是2.5

該模塊只需要在要從中運行腳本的計算機上安裝一次。接下來,運行Connect-AzAccount以對Azure進行身份驗證。如果您想了解更多信息,請了解如何使用Connect-AzAccount cmdlet。

要驗證一切正常,您可以運行Get-AzSqlServer -ResourceGroupName <Your Resource Group>來查找數據庫。如果返回了您要連接的數據庫,則可以開始運行腳本。

現在您已經通過驗證並可以看到數據庫,可以通過運行下面的腳本來查詢它。此代碼將導入Azure SQL模塊,設置參數(數據庫、用戶名、憑據和查詢)並運行Invoke-SqlCmd來啟動Transact SQL查詢。

# 導入模組
Import-Module Az.Sql -Force
 
# 設定參數
$Params = @{
   'ServerInstance' = 'atademo.database.windows.net';
   'Database' = 'ata-demo';
   'Username' = 'ataadmin';
   'Password' = 'Admin123';
   'Query' = 'SELECT pc.Name as CategoryName, p.name as ProductName
FROM [SalesLT].[ProductCategory] pc
JOIN [SalesLT].[Product] p
ON pc.productcategoryid = p.productcategoryid;'
}
 
# Splat
Invoke-Sqlcmd @Params

您也可以使用 PowerShell 讀取 Azure SQL 伺服器和資料庫,並使用該資訊傳遞給查詢,如下所示。假設您已經定義了 $rgName,並將密碼作為 安全字串 傳遞,第一個腳本和第二個腳本之間沒有功能上的差異。

Import-Module Az.Sql -Force
 
$rgName = '<Resource Group Name>'
$sqlServer = Get-AzSqlServer -ResourceGroupName $rgName
$sqlDatabase = Get-AzSqlDatabase -ServerName $sqlServer.ServerName -ResourceGroupName $rgName
 
$Params = @{
   'ServerInstance' = $sqlServer.FullyQualifiedDomainName;
   'Database' = $sqlDatabase.DatabaseName[0];
   'Username' = $sqlServer.SqlAdministratorLogin;
   'Password' = ‘<Password>’;
   'Query' = 'SELECT pc.Name as CategoryName, p.name as ProductName
       FROM [SalesLT].[ProductCategory] pc
       JOIN [SalesLT].[Product] p
       ON pc.productcategoryid = p.productcategoryid;'
}
 
Invoke-Sqlcmd @Params

結語

現在,您已經以幾種不同的方式連接到 Azure SQL 資料庫,應該可以在傳統 SQL Server 安裝的情況下或與其一起使用,感到自在!

進一步閱讀

Source:
https://adamtheautomator.com/connect-to-azure-sql-database/