概述

本主题介绍如何连接到运行于 Azure 虚拟机的 SQL Server 实例。 它介绍了一些常规连接方案,并提供了在 Azure VM 中配置 SQL Server 连接的详细步骤

Important

Azure 提供两个不同的部署模型用于创建和处理资源:Resource Manager 和经典模型。 本文介绍如何使用经典部署模型。 Azure 建议大多数新部署使用 Resource Manager 模型。 如果使用的是 Resource Manager VM,请参阅使用 Resource Manager 连接到 Azure 上的 SQL Server 虚拟机

连接方案

将客户端连接到虚拟机上运行的 SQL Server 的方式各不相同,具体取决于客户端的位置与计算机/网络配置。 这些方案包括:

Note

使用下列任一方法进行连接之前,必须遵循 本文中的步骤配置连接

连接到同一云服务中的 SQL Server

可以在同一云服务中创建多个虚拟机。 若要了解此虚拟机方案,请参阅如何将虚拟机连接到虚拟网络或云服务。 本方案介绍一台虚拟机上的客户端尝试连接到运行于同一云服务中另一虚拟机的 SQL Server 时的情况。

在此方案中,可使用 VM 名称(在门户中也显示为计算机名或主机名)进行连接。 这是你在创建 VM 时为其提供的名称。 例如,如果你将 SQL VM 命名为 mysqlvm,则同一云服务中的客户端 VM 可以使用以下连接字符串进行连接:

复制
  1. "Server=mysqlvm;Integrated Security=false;User ID=<login_name>;Password=<your_password>"

通过 Internet 连接到 SQL Server

如果想要通过 Internet 连接到 SQL Server 数据库引擎,则必须创建虚拟机终结点以进行传入 TCP 通信。 此 Azure 配置步骤将传入 TCP 端口通信定向到虚拟机可以访问的 TCP 端口。

若要通过 Internet 进行连接,必须使用 VM 的 DNS 名称和(本文中稍后配置的)VM 终结点端口号。 若要查找 DNS 名称,请导航到 Azure 门户,然后选择“虚拟机(经典)”。 然后选择你的虚拟机。 “DNS 名称”显示在“概述”部分中。

例如,假设一台经典虚拟机名为 mysqlvm,其 DNS 名称为 mysqlvm7777.chinacloudapp.cn 且 VM 终结点为 57500。 假设正确配置了连接性,则可从 Internet 上的任意位置使用以下连接字符串访问该虚拟机:

复制
  1. "Server=mycloudservice.chinacloudapp.cn,57500;Integrated Security=false;User ID=<login_name>;Password=<your_password>"

尽管客户端可通过 Internet 进行连接,但这并不意味着任何人都可以连接到 SQL Server。 外部客户端必须有正确的用户名和密码。 为了提高安全性,请不要对公共虚拟机终结点使用常用的 1433 端口。 如果可能,请考虑在终结点上添加 ACL 以将流量限制到你允许的客户端。 有关在终结点上使用 ACL 的说明,请参阅管理终结点上的 ACL

Note

务必注意,使用此方法与 SQL Server 通信时,Azure 数据中心的所有传出数据都将服从一般出站数据传输定价

连接到同一虚拟网络中的 SQL Server

虚拟网络支持其他方案。 你可以连接同一虚拟网络中的 VM,即使这些 VM 位于不同的云服务中。 使用站点到站点 VPN,可以创建连接 VM 与本地网络和计算机的混合体系结构。

虚拟网络还可让你将 Azure VM 加入域。 这是对 SQL Server 使用 Windows 身份验证的唯一方式。 其他连接方案需要使用用户名和密码进行 SQL 身份验证。

如果要配置域环境和 Windows 身份验证,则不需要使用本文中的步骤来配置公共终结点或 SQL 身份验证和登录名。 在此方案中,你可以在连接字符串中指定 SQL Server VM 名称以连接 SQL Server 实例。 以下示例假设同时已配置 Windows 身份验证,并且用户已获得访问 SQL Server 实例的权限。

复制
  1. "Server=mysqlvm;Integrated Security=true"

在 Azure VM 中配置 SQL Server 连接的步骤

以下步骤演示了如何使用 SQL Server Management Studio (SSMS) 通过 Internet 连接到 SQL Server 实例。 但是,这些步骤同样适用于使你的 SQL Server 虚拟机可以通过本地和 Azure 中运行的应用程序访问。

你必须先完成下列各部分中描述的下列任务,然后才能从其他 VM 或 Internet 连接到 SQL Server 的实例:

下图中概述了连接路径:

为虚拟机创建 TCP 终结点

要从 Internet 访问 SQL Server,虚拟机必须具有终结点以侦听传入的 TCP 通信。 此 Azure 配置步骤将传入 TCP 端口通信定向到虚拟机可以访问的 TCP 端口。

Note

如果你在同一云服务或虚拟网络中连接,则不需要创建一个公开访问的终结点。 在这种情况下,你可以继续执行下一步。 有关详细信息,请参阅连接方案

  1. 在 Azure 门户中,选择“虚拟机(经典)”。
  2. 然后选择 SQL Server 虚拟机。
  3. 选择“终结点”,然后单击“终结点”边栏选项卡顶部的“添加”按钮。

  4. 在“添加终结点”边栏选项卡上,提供“名称”,例如 SQLEndpoint。
  5. 选择“TCP”作为“协议”。
  6. 为“公用端口”指定端口号,如“57500”。
  7. 为“专用端口”,指定 SQL Server 侦听端口,默认为“1433”。
  8. 单击“确定” 以创建终结点。

在 Windows 防火墙中为数据库引擎的默认实例打开 TCP 端口

  1. 通过远程桌面连接到虚拟机。 有关连接到 VM 的详细说明,请参阅使用远程桌面打开 SQL VM
  2. 登录后,在开始屏幕中,键入“WF.msc”,然后按 ENTER。

  3. 在“高级安全 Windows 防火墙”的左窗格中,右键单击“入站规则”,然后在操作窗格中单击“新建规则”。

  4. 在“新建入站规则向导”对话框中,在“规则类型”下,选择“端口”,然后单击“下一步”。
  5. 在“协议和端口”对话框中,使用默认 TCP。 然后,在“特定本地端口”框中,键入数据库引擎实例的端口号(即默认实例对应的端口号 1433,或在终结点步骤中为专用端口选择的端口号)。

  6. 单击“下一步”。
  7. 在“操作”对话框中,选择“允许连接”,然后单击“下一步”。

    安全说明:选择“只允许安全连接”可增加安全性。 如果想在环境中配置其他安全性选项,请选择此选项。

  8. 在“配置文件”对话框中,选择“公用”、“专用”和“域”。 然后单击“下一步”。

    安全说明:选择“公用”允许通过 Internet 进行访问。 只要有可能,就请选择更具限制性的配置文件。

  9. 在“名称”对话框中,键入此规则的名称和说明,然后单击“完成”。

根据需要为其他组件打开附加端口。 有关详细信息,请参阅配置 Windows 防火墙以允许 SQL Server 访问

将 SQL Server 配置为侦听 TCP 协议

  1. 在连接到虚拟机时,在开始页面中,键入“SQL Server 配置管理器”,然后按 ENTER。

  2. 在 SQL Server 配置管理器中,在控制台窗格中,展开“SQL Server 网络配置”。
  3. 在控制台窗格中,单击“MSSQLSERVER 的协议”(默认实例名称)。在详细信息窗格中,右键单击“TCP”,然后单击“启用”(如果尚未启用)。

  4. 在控制台窗格中,单击“SQL Server 服务”。 在详细信息窗格中,右键单击 SQL Server (实例名)(默认实例为“SQL Server (MSSQLSERVER)”),然后单击“重新启动”以停止并重新启动该 SQL Server 实例。**

  5. 关闭 SQL Server 配置管理器。

有关启用 SQL Server 数据库引擎的协议的详细信息,请参阅启用或禁用服务器网络协议

配置混合模式的 SQL Server 身份验证

在没有域环境的情况下,SQL Server 数据库引擎无法使用 Windows 身份验证。 若要从其他计算机连接到数据库引擎,请将 SQL Server 的身份验证模式配置为混合。 混合模式身份验证同时允许 SQL Server 身份验证和 Windows 身份验证。

Note

如果你已使用配置的域环境配置了 Azure 虚拟网络,可能没有必要配置混合模式身份验证。

  1. 在连接到虚拟机时,在开始页面中,键入“SQL Server Management Studio”,然后单击勾选图标。

    Management Studio 在首次打开时,一定会创建用户 Management Studio 环境。 这可能需要一小段时间。

  2. Management Studio 会显示“连接到服务器”对话框。 在“服务器名称”框中,键入要使用对象资源管理器连接到数据库引擎的虚拟机的名称(除了虚拟机名称,还可以使用“(local)”或一个句点作为“服务器名称”)。 选择“Windows 身份验证”,在“用户名”框中保留“your_VM_name\your_local_administrator”。 单击“连接”。

  3. 在 SQL Server Management Studio 的“对象资源管理器”中,右键单击 SQL Server 实例的名称(虚拟机名称),然后单击“属性”。

  4. 在“安全性”页上,在“服务器身份验证”下,选择“SQL Server 和 Windows 身份验证模式”,然后单击“确定”。

  5. 在 SQL Server Management Studio 对话框中,单击“确定”接受重新启动 SQL Server 的要求。
  6. 在“对象资源管理器”中,右键单击你的服务器,然后单击“重新启动”。 (如果 SQL Server 代理正在运行,它也必须重新启动。)

  7. 在 SQL Server Management Studio 对话框中,单击“是”同意重新启动 SQL Server。

创建 SQL Server 身份验证登录名

若要从其他计算机连接到数据库引擎,你必须创建至少一个 SQL Server 身份验证登录名。

  1. 在 SQL Server Management Studio 对象资源管理器中,展开你要在其中创建新登录名的服务器实例所在的文件夹。
  2. 右键单击“安全性”文件夹,指向“新建”,然后选择“登录名…”。

  3. 在“登录名 - 新建”对话框中的“常规”页上,在“登录名”框中输入新用户的名称。
  4. 选择“SQL Server 身份验证”。
  5. 在“密码”框中,输入新用户的密码。 在“确认密码”框中再次输入该密码。
  6. 选择所需的密码强制选项(“强制实施密码策略”、“强制密码过期”和“用户在下次登录时必须更改密码”)。 如果使用此登录名,则在下次登录时无需更改密码。
  7. 从“默认数据库”列表中,为该登录名选择默认数据库。 “master”是此选项的默认值。 如果尚未创建用户数据库,则将此设置保留为“master”。

  8. 如果这是你创建的第一个登录名,则你可能希望将此登录名指派为 SQL Server 管理员。 如果是这样,请在“服务器角色”页面上选中“sysadmin”。

    Note

    sysadmin 固定服务器角色的成员对数据库引擎具有完全控制权限。 应谨慎限制此角色中的成员资格。

  9. 单击“确定”。

有关 SQL Server 登录名的详细信息,请参阅 创建登录名

确定虚拟机的 DNS 名称

若要从另一台计算机连接到 SQL Server 数据库引擎,必须知道虚拟机的域名系统 (DNS) 名称。 (这是 Internet 用于识别虚拟机的名称。 可以使用 IP 地址,但 IP 地址在 Azure 为冗余或维护而移动资源时可能会变更。 DNS 名称将保持不变,因为可将该名称重定向到新的 IP 地址。)

  1. 在 Azure 门户中(或在完成前一步后),选择“虚拟机(经典)”。
  2. 选择 SQL VM。
  3. 在“虚拟机”边栏选项卡中,复制虚拟机的“DNS 名称”。

从其他计算机连接到数据库引擎

  1. 在连接到 Internet 的计算机上,打开 SQL Server Management Studio。
  2. 在“连接到服务器”或“连接到数据库引擎”对话框的“服务器名称”框中,按“DNSName,portnumber”的格式输入虚拟机的 DNS 名称(在前一任务中确定)和公共终结点端口号,例如“mysqlvm.chinacloudapp.cn,57500”。

    如果不记得之前创建的公共终结点端口号,可以在“虚拟机”边栏选项卡的“终结点”区域中找到。

  3. 在“身份验证”框中,选择“SQL Server 身份验证”。
  4. 在“登录名”框中,键入在前面的任务中创建的登录名。
  5. 在“密码”框中,键入在前面的任务中创建的登录名的密码。
  6. 单击“连接”。

后续步骤

如果还打算针对高可用性和灾难恢复使用 AlwaysOn 可用性组,则应考虑实施侦听器。 数据库客户端将连接到侦听器,而不是直接连接到一个 SQL Server 实例。 侦听器将客户端路由到可用性组中的主副本。 有关详细信息,请参阅在 Azure 中配置 AlwaysOn 可用性组的 ILB 侦听器

请务必查看 Azure 虚拟机上运行的 SQL Server 的所有安全最佳实践。 有关详细信息,请参阅 Azure 虚拟机中 SQL Server 的安全注意事项

有关其他与在 Azure VM 中运行 SQL Server 相关的主题,请参阅 SQL Server on Azure Virtual Machines(Azure 虚拟机上的 SQL Server)。立即访问http://market.azure.cn

连接到 Azure 上的 SQL Server 虚拟机(经典部署)的更多相关文章

  1. Linux 上的 SQL Server 2017 的安装指南

    一:介绍背景 微软在2016年 3 月首次对外宣布了 Linux 版的 SQL Server,并于2017年 7 月发布了首个公开 RC 版.前几日在美国奥兰多召开的微软 Ignite 2017 大会 ...

  2. Ubuntu上配置SQL Server Always On Availability Group(Configure Always On Availability Group for SQL Server on Ubuntu)

    下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...

  3. Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group

    下面简单介绍一下如何在Red Hat Enterprise Linux上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的 ...

  4. Configure Always On Availability Group for SQL Server on Ubuntu——Ubuntu上配置SQL Server Always On Availability Group

    下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...

  5. 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs

    原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...

  6. Linux上的SQL Server的起步

    我们知道,几个星期前,微软发布了在Linux上直接运行的SQL Server第一个公开CTP版本!因此,对我来说,是时候跨界在Linux上安装我的第一个SQL安装,这样的话,我就可以在Linux上折腾 ...

  7. SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)

    本文从零开始一步一步介绍如何在Ubuntu上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创建Ubuntu系统(Create U ...

  8. SQL Server on Red Hat Enterprise Linux——RHEL上的SQL Server(全截图)

    本文从零开始一步一步介绍如何在Red Hat Enterprise Linux上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创 ...

  9. SQL Server 虚拟化(2)——理想的SQL Server虚拟机架构

    本文属于SQL Server虚拟化系列 搭建SQL Server虚拟机,在各个组织之间都有自己的标准和最佳实践.从第一眼看去,光物理配置就有过百种,所有的这些细微差别都有可能为后续日常管理过程中故障侦 ...

随机推荐

  1. ubuntu 添加多个IP

    上次这个问题 :  UBUNTU 无法解析域名 解决方法 解决后,每次重启电脑都需要重新配置 /etc/resolv.conf. 这次添加IP的时候留心发现,在/etc/network/interfa ...

  2. 剑指offer(21-25)编程题

    栈的压入.弹出序列 从上往下打印二叉树 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 21.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假 ...

  3. 环境准备 Ubuntu & Docker

    目录 Ubuntu 简介 配置 Docker 简介 Docker CE 安装 参考 本文主要讲解在 Ubuntu 上安装和配置 Docker CE. Ubuntu 简介 Ubuntu(乌班图)是一个基 ...

  4. *2.3.4_封装成agent

    上一节在验证平台中加入monitor时,读者看到了driver和monitor之间的联系:两者之间的代码高度相似.其本质是因为二者处理的是同一种协议,在同样一套既定的规则下做着不同的事情.由于二者的这 ...

  5. <机器学习实战>读书笔记--logistic回归

    1. 利用logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类. 2.sigmoid函数的分类 Sigmoid函数公式定义 3.梯度上升法    基本思想:要找 ...

  6. SqlServer 2008 还原数据库的问题

    今天想把服务器上的一个SqlServer2005的数据库 还原到本地 SqlServer2008的数据库, 操作是报错:备份集中的数据库备份与现有的 'zyehouqin' 数据库不同. RESTOR ...

  7. LINQ-Where子句与select子句

    1.Where子句 where子句的作用就是筛选元素,除了开始喝结束位置,where子句几乎可以出现在LINQ表达式的任意位置.一个LINQ表达式中可以有Where子句,也可以没有:可以有一个,可以有 ...

  8. LINQ-from多from

    简: LINQ全称是Language  Integrated Query,中文“语言集成查询”.LINQ是一种查询技术,有LINQ toSQL.LINQ to Object. LINQ to ADO. ...

  9. C# List用Lambda表达式排序

    降序: lstroot.Sort((x,y)=>y.static_count.CompareTo(x.static_count)); 升序: lstroot.Sort((x,y)=>x.s ...

  10. C# List<T> 对于某个字段去重复

    gradeSubjectItem.teacher = teacherInfos.Where((x, i) => teacherInfos.FindIndex(z => z.guid == ...