连接到 Azure SQL 数据库:一份全面的指南

Azure SQL Database是一种托管的SQL数据库服务,专为开发人员和管理员设计,无需执行安装SQL服务器或花费数小时设置故障转移群集等繁琐任务。

Microsoft Azure已经减轻了设置数据库层的繁重工作,因此剩下的只需连接到数据库,这就是本文要讨论的内容。以下是连接到Azure SQL数据库的几种不同方法。

先决条件

如果您想连接到Azure SQL数据库,您需要提前满足一些先决条件。

  1. 一个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管理工作室
  • Visual Studio Code
  • PowerShell

配置Azure SQL数据库

在开始之前,您必须确保已经准备好一个数据库并且可以连接到它。使用快速入门文档中的说明,我已经设置了一个名为ata-demo的示例数据库。该数据库具有一个 SQL 管理员(sa)用户AtaAdmin,密码是Admin123

我正在使用的密码并不是最安全的,但是对于演示目的来说已经足够了。为了避免类似信用档案局的情况,请在设置类似于这样的内容在 QA 或者生产环境时采用最佳实践!

接下来,您需要登录Azure 门户,以确保您的设备可以连接到数据库。您可以将其连接到现有的 Azure 虚拟网络,或者定义可以访问数据库的 IP 范围,这是下面演示中所做的。转到您想要连接的 SQL 数据库的资源页面,查找一个名为设置服务器防火墙的选项。

Setting an Azure SQL Server firewall rule

在这里,您将有选择 IP 范围的选项。此页面还显示了您设备的 IP 地址,这是我将在演示中使用的内容。但是在实践中,这将是您的应用程序层的子网范围或虚拟网络。完成这些步骤后,您就可以继续进行第一个演示了!

使用 Azure 门户连接到 Azure SQL 数据库

由于您已经在 Azure 门户上,您可以直接在这里进行第一个演示。

回到左侧导航菜单,使用总览页面,查找查询编辑器。一旦进入那里,系统将提示您使用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

现在您已经了解了防火墙规则的设置,我们可以尝试从其他平台开始操作。

连接到Azure SQL数据库使用SQL Server Management Studio(SSMS)

迄今为止,管理SQL数据库服务器的最强大工具是SSMS。经过时间的考验和严峻的实战,这已经是SQL Server数据库管理员十多年来的首选工具。

SSMS也与Azure SQL数据库完全兼容。如果尚未安装,您可以从Microsoft 下载最新版本或使用包管理器 进行安装

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

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

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

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。系统将提示您选择要使用的连接来运行该查询。选择您创建的连接,代码将在不离开屏幕的情况下打开另一个面板,显示结果!

Connecting to mySql in Visual Studio Code

使用 PowerShell 连接到 Azure SQL 数据库

要使用 PowerShell 连接到 Azure SQL 数据库,您需要安装 Az PowerShell 模块。您可以在 PowerShell Gallery 上找到此模块。通过运行命令 Install-Module Az 下载并安装该模块。在撰写本文时,该模块的版本为 2.5

该模块只需要在要从中运行脚本的计算机上安装一次。接下来,通过运行 Connect-AzAccount 进行 Azure 身份验证。如果您想了解更多信息,请查阅有关如何使用 Connect-AzAccount cmdlet 的内容。

为了验证一切正常,您可以通过运行 Get-AzSqlServer -ResourceGroupName <Your Resource Group> 查找数据库。如果返回的是您想要连接的数据库,则表示准备好运行脚本了。

现在,您已经进行了身份验证并可以看到数据库,可以通过运行以下脚本来查询它。此代码将导入 Azure SQL 模块,设置参数(数据库、用户名、凭据和查询),然后运行 Invoke-SqlCmd 来启动事务 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;'
}
 
# 扩展
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/