连接SQL Server实例

完成初始化配置后,您可以通过多种方式连接到SQL Server实例(例如通过数据管理DMS、SSMS客户端等),实现您的业务目标。本文介绍这些连接方法的具体操作。

前提条件

  • 已创建RDS SQL Server实例。具体操作,请参见创建RDS SQL Server实例

  • 已创建账号和数据库。具体操作,请参见创建数据库和账号

  • 已设置白名单,允许客户端所在的ECS或本地设备访问RDS SQL Server实例。更多信息,请参见设置白名单

    说明
    • 如果使用ECS通过内网访问RDS SQL Server,ECSRDS SQL Server实例需要位于同一个地域的同一VPC下,然后将ECS的私网IP添加到白名单。

    • 如果使用本地设备访问RDS SQL Server,则将本地设备的公网IP添加到白名单。

操作步骤

您可以通过DMS(数据管理服务)直接登录至SQL Server数据库,或通过客户端远程连接至SQL Server数据库,或者通过Java应用程序连接SQL Server数据库。

方式一:通过DMS登录实例

数据管理DMS(Data Management)是一款支撑数据全生命周期的一站式数据管理平台,其提供全域数据资产管理、数据治理、数据库设计开发、数据集成、数据开发和数据消费等功能,同时DMS内置的数据灾备(DBS)还提供了低成本高可靠的备份恢复能力,致力于帮助企业高效、安全地挖掘数据价值,助力企业数字化转型。

您可以使用DMS快速便捷地登录RDS SQL Server实例进行数据的管理与使用,无需关注实例IP白名单的设置与实例连接类型的选择。

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 单击登录数据库进入DMS登录页面。

    image..png

  3. 登录实例弹窗中,填写登录信息,并单击登录

    image

    • 选择访问方式,本教程以账号+密码登录为例。

    • 填写数据库账号数据库密码,本教程以高权限账号testuser和用户自定义密码为例。

    • 选择管控模式。本教程以自由操作为例。

      说明
      • 自由操作是免费的,稳定变更安全协同会收取一定费用,详情请参见管控模式计费

      • 相比于自由操作的管控模式,稳定变更安全协同提供更多的功能支持和更强的数据库管控能力,如果您是试用或体验RDS SQL Server产品,建议您选择自由操作模式,详情请参见管控模式介绍

  4. 查看数据库。登录成功后您可以在DMS页面左侧的已登录实例中查看新创建的数据库,本教程以dbtest数据库为例,您也可以双击其它数据库进行切换。

    image

    说明

    如果实例存在,但在DMS已登录实例列表中未找到目标数据库,可能是:

    • 登录账号无目标数据库的访问权限:您可前往RDS实例详情页的账号管理页面单击目标账号操作下的修改权限进行授权。具体操作,请参见修改账号权限

    • 元数据未同步导致目录无法显示:请将鼠标悬浮在目标数据库所属实例上,单击实例名右侧的image按钮,即可刷新数据库列表,显示目标数据库。

方式二:通过SSMS客户端连接实例

Microsoft SQL Server Management Studio(SSMS)是一个用于管理和处理SQL Server的图形化界面工具,它可以用于连接不同的SQL Server数据库,包括RDS SQL Server实例、本地SQL Server实例或云上SQL Server实例等。

本教程以Microsoft SQL Server Management Studio 19.0(SSMS)版本为例,向您介绍通过客户端连接RDS SQL Server实例的方法。

说明
  • 建议下载最新版本客户端,以支持所有SQL Server服务端版本。

  • 使用客户端方式连接实例需要预先设置IP白名单并按需获取实例连接地址

  1. 打开本地Microsoft SQL Server Management Studio 19.0(SSMS)客户端。

  2. 选择连接 > 数据库引擎

  3. 在弹出的连接到服务器对话框中输入登录信息

    image..png

    参数

    本教程取值

    说明

    服务器名称

    rm-2ze****.rds.aliyuncs.com,1433

    RDS实例的连接地址及端口号,填写开通外网地址步骤时所获取的外网地址外网端口,连接地址与端口号间用半角逗号(,)隔开。

    身份验证

    SQL Server身份验证

    SQL Server的验证方式。

    登录名

    testuser

    填写RDS实例的账号名称。

    密码

    Test_pw123

    填写RDS实例的账号密码。

  4. 单击连接,即可连接到实例。

    连接成功后,SSMS左侧将显示数据库连接信息。

    image..png

方式三:通过Java应用程序连接实例

下文将介绍如何通过Java应用程序利用JDBC连接到RDS SQL Server实例。

说明

在连接数据库前,请预先将应用程序运行环境的IP地址(如ECS或本地设备的IP地址)加入到RDS SQL Server实例的IP白名单中。具体操作,请参见设置白名单

  1. Maven项目中添加Microsoft JDBC驱动程序,以访问SQL Server数据库。

    方法一:手动在Maven项目的pom.xml文件中添加依赖

    说明
    • 建议根据对应的Java版本选择依赖的版本,例如12.2.0包中的mssql-jdbc-12.2.0.jre8.jar文件应与Java 8(或更高版本)配合使用。

    • 如何查看依赖的历史版本,请参见官方教程

    <dependency>
      <groupId>com.microsoft.sqlserver</groupId>
      <artifactId>mssql-jdbc</artifactId>
      <version>12.2.0.jre8</version> <!-- 请检查最新的版本号 -->
    </dependency>

    image

    依赖添加完成后,单击imagepom.xml 文件中的依赖会自动下载。

    image

    方法二:手动下载JDBC并将其添加到Maven项目的类路径中

    1. Microsoft JDBC Driver for SQL Server下载符合您Java版本的驱动程序。

      Microsoft JDBC Driver for SQL Server是一种Type 4 JDBC驱动程序,通过Java平台上可用的标准JDBC应用程序编程接口 (API) 提供数据库连接。它可以从任何Java应用程序、应用程序服务器或支持Java的小程序访问SQL Server。
    2. 下载并解压缩后,手动将JAR文件(例如sqljdbc4.jarsqljdbc.jar)保存到项目中。

      本教程以IntelliJ IDEA为示例,演示添加方法:

      image

      image

      image

  2. 编写通过Java连接SQL Server数据库的示例代码,如下:

    请将示例中的连接地址、数据库名、用户名和密码,以及SQL命令替换为实际的信息。更多详情,请参见查看或修改连接地址和端口

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.ResultSet;
    
    public class testMSSQLJDBC {
    
        public static void main(String[] args) {
            // 输入数据库连接地址(应用程序部署在ECS内使用内网地址,部署在本地或其他环境请使用外网地址)
            String url = "jdbc:sqlserver://rm-2vc367d081200******.mssql.cn-chengdu.rds.aliyuncs.com:1433;"
                    + "database=YourDatabaseName;"
                    + "encrypt=true;"
                    + "trustServerCertificate=true;"
                    + "loginTimeout=30;";
            // 用户名和密码(不使用Windows身份验证时,需指定用户名和密码)
            String username = "usernametest";
            String password = "Passwordtest!";
    
            // 创建连接对象
            Connection connection = null;
    
            try {
                // 加载JDBC驱动程序
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                // 建立与SQL Server数据库的连接
                connection = DriverManager.getConnection(url, username, password);
                System.out.println("连接成功!");
    
                // 创建Statement对象用于执行SQL命令
                Statement statement = connection.createStatement();
                // 执行SQL查询,请按需替换自己的表名和列名
                String sql = "SELECT TOP 10 * FROM YourTableName";
                ResultSet resultSet = statement.executeQuery(sql);
    
                // 处理结果集
                while (resultSet.next()) {
                    System.out.println("列1: " + resultSet.getString("YourColumnName1"));
                    System.out.println("列2: " + resultSet.getString("YourColumnName2"));
                }
    
                // 关闭结果集
                resultSet.close();
                // 关闭Statement
                statement.close();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                // 关闭连接
                if (connection != null) {
                    try {
                        connection.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
  3. 测试连接是否成功。

    将上述代码保存为SqlServerConnection.java文件,在命令行或IDE中编译并运行该程序。若配置正确,程序将输出类似如下结果,表示程序已成功连接到SQL Server数据库。

    image

连接失败的解决办法

请参见解决无法连接实例问题

常见问题

我想通过外网地址连接RDS实例,但我的外网IP不稳定一直在变,有什么使用建议吗?

建议您通过添加白名单操作放大白名单网段,以满足业务需求。更多详情,请参见SQL Server如何确定外部服务器/客户端的公网IP地址

重要

0.0.0.0/0表示允许任何IP访问RDS实例,若您测试所需在白名单中添加了0.0.0.0/0,测试完成后请立即修改。

我使用函数计算,想获取RDS的数据,要怎么操作呢?

您可以为函数安装第三方依赖,使用内置模块获取RDS数据。具体操作,请参见为函数安装第三方依赖

我在DMS中登录了RDS实例,但在DMS里面提示没有数据库,什么原因?

如果实例存在,但在DMS已登录实例列表中未找到目标数据库,可能是:

  • 登录账号无目标数据库的访问权限:您可前往RDS实例详情页的账号管理页面单击目标账号操作下的修改权限进行授权。具体操作,请参见修改账号权限

  • 元数据未同步导致目录无法显示:请将鼠标悬浮在目标数据库所属实例上,单击实例名右侧的image按钮,即可刷新数据库列表,显示目标数据库。

我在本地电脑上用SSMS连接RDS实例连接不上,什么原因?

通过本地环境的SSMS连接阿里云RDS SQL Server实例,需要确保:

  • 通过本地设备访问RDS实例需要先开通外网地址,再通过外网地址连接,申请外网地址和后续产生的公网流量暂不收费,详情请参见开通外网地址

    image

  • 将本地设备的IP地址写入RDS SQL Server实例的IP白名单,详情请参见RDS实例中添加白名单

    image