使用 Webshell 访问 SQL Server 主机并利用 SSRS

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 使用 Webshell 访问 SQL Server 主机并利用 SSRS

本文将指导您使用RDS SQL Server实例的主机账号登录和管理SQL Server Reporting Services(SSRS)数据库。


背景信息

RDS SQL Server提供Webshell功能,用户可以通过Web界面登录RDS SQL Server实例的操作系统。通过Webshell,用户可以在RDS SQL Server实例上执行命令、上传和下载文件以及执行各种操作。Webshell 提供了一种方便高效的远程管理方法,尤其是在 SSH 客户端不可用时。


SQL Server Reporting Services (SSRS) 是一种 Microsoft 企业级报告服务,使用户能够从 SQL Server 数据库和其他数据源生成各种类型的报告。这些报表包括表格报表、图表报表、交叉表报表和多维数据报表。SSRS 可以连接到 RDS SQL Server 数据库,并将其用作数据源来生成不同类型的报表。这种组合可实现高效的数据管理、分析和报告生成,以支持业务决策和管理。


场景

例如,假设您是一家中小型企业的数据库管理员,负责管理公司的 SQL Server 数据库。随着公司工作负载和数据库访问请求的增加,需要使用 SSRS 来分析和监视数据库。但是,由于公司的服务器位于其他地方,因此无法直接登录主机进行这些操作。


最终访问RDS SQL Server实例所在的主机。登录后,可以使用 SSRS 轻松管理和操作 SQL Server 数据库。


先决条件

确保RDS实例满足以下要求:


• RDS实例位于中国(张家口)以外的区域。


• RDS实例:基础版、集群版、RDS高可用版。如果您的RDS实例为RDS高可用版,请确保该实例为SQL Server 2012及以上版本。


• RDS实例属于通用型或独享型实例规格族。不支持共享实例规格族。


• RDS实例位于VPC中。关于如何修改RDS实例的网络类型,请参见修改RDS SQL Server实例的网络类型。


RDS实例的创建时间满足以下要求:


• 如果RDS实例运行RDS高可用版或RDS集群版,则该实例创建时间为2021年1月1日(含)之后。


• 如果RDS基础版为RDS基础版,则创建时间为2022年9月2日(含)之后。


注意:您可以在RDS控制台基本信息页面的“状态”区域查看RDS实例的创建时间参数。


• 使用阿里云账号登录RDS实例。


• 授予创建系统管理员帐户的权限。具体操作,请参见创建RDS SQL Server系统管理员账号。


• 已创建系统管理员帐户。具体操作,请参见创建RDS SQL Server系统管理员账号。


• 创建帐户类型为“系统管理员帐户”的主机帐户。具体操作,请参见为RDS SQL Server实例创建主机账号并使用主机账号登录。

注意

RDS实例的系统管理员账号或主机账号拥有超出RDS管理范围的权限。RDS实例创建此类账号后,系统不会为RDS实例提供阿里云服务等级协议(SLA)中指定的服务可用性。


步骤一:使用Webshell登录RDS主机

1. 转到实例页面。在顶部菜单栏,选择RDS实例所在的地域。然后,找到RDS实例,单击实例ID。

2. 在弹出的页面左侧导航栏,单击账号管理。

3. 在显示的页面上,单击“主持人帐户”选项卡。找到所需的主机帐户,然后单击操作列中的远程连接(主)。

4. 在“远程连接”对话框中,输入主机帐户的密码。

5. 单击“确定”。

系统生成Webshell地址,并通过该URL自动连接RDS实例所在的主机。系统在弹出的窗口中显示一个webshell页面。该页面可能被浏览器阻止。如果页面被阻止,您可以配置浏览器以允许显示该页面。示例如下图所示。


步骤 2:在主机上配置和使用 SSRSStep 2: Configure and use the SSRS on the host

先决条件

在为 RDS 实例所在的主机配置 SSRS 之前,请确保 SQL Server Reporting Services (MSSQLSERVER) 已启用并正在运行。有关如何查看或更改 SSRS 状态的详细信息,请参阅查看或修改 SSRS 的状态


使用说明

当您的RDS实例运行RDS高可用版或RDS集群版时,RDS实例处于镜像状态或Always On可用性组状态。这可能会导致 SSRS 配置中出现错误。如果出现错误,您需要使用系统管理员账号登录RDS实例,并执行以下语句解决错误。


注意:RDS实例会定期构建镜像或可用组。配置 SSRS 时,可能会出现多个配置错误。每次报错时,您需要使用系统管理员账号登录RDS实例,并执行相关语句。

-- Execute the following statements to disable the image of the database on an RDS instance that runs RDS High-availability Edition:
ALTER DATABASE [ReportServer] SET PARTNER OFF;
ALTER DATABASE [ReportServerTempDB] SET PARTNER OFF;
-- Execute the following statements to remove the database from the ag-rds availability group of an RDS instance that runs RDS Cluster Edition:
ALTER AVAILABILITY GROUP [ag-rds] REMOVE DATABASE [ReportServer];
ALTER AVAILABILITY GROUP [ag-rds] REMOVE DATABASE [ReportServerTempDB];

这些语句可确保 SSRS 可以正确配置和运行。如果您的RDS集群版运行,配置SSRS后,您需要使用系统管理员账号登录RDS实例,并执行以下语句将数据库添加到可用组中。这有助于确保高可用性以及正确的数据库备份和还原。

ALTER AVAILABILITY GROUP [AG-RDS] ADD DATABASE [ReportServer]
ALTER AVAILABILITY GROUP [AG-RDS] ADD DATABASE [ReportServerTempDB]

程序

1. 使用系统管理员账号登录RDS实例,执行如下语句:

DISABLE TRIGGER [_$$_tr_$$_rds_alter_database] ON ALL SERVER;

注意

关于如何连接RDS实例,请参见连接RDS SQL Server实例

2. 单击“

>”图标,然后选择“Reporting Services 配置管理器”。

3. 在弹出的对话框中,确认报表服务器的名称,然后单击“连接”。

注意:如果您的RDS实例运行RDS高可用版或RDS集群版,则由于镜像或可用性组状态,可能无法将RDS实例连接到报表服务器。如果连接失败,您可以根据使用说明解决问题。

4. 在左侧导航栏,单击“服务账号Web服务URL”,根据业务需要配置相关参数。



注意:更多信息,请参见官方文档

5. 在左侧导航栏,单击数据库。在页面右侧,单击“更改数据库”以在主机上创建报表服务器数据库

a) 选择“创建新的报表服务器数据库”,然后单击“下一步”。

b) 确认服务器名称,配置以下参数,然后单击“下一步”。


参数 描述
服务器名称 服务器的名称。名称无法更改。
身份验证类型 身份验证类型。选择“SQL Server 帐户”。
用户名 为RDS实例创建的主机账号的用户名。
密码 为RDS实例创建的主机账号的密码。


c) 输入报表服务器数据库的名称,并选择脚本的语言。然后,单击“下一步”。

d) 指定要连接到报表服务器的帐户的凭据,然后单击“下一步”。

e) 确认“摘要”页面上的信息,然后单击“下一步”。等到创建报表服务器数据库。然后,单击“完成”。

6. 使用系统管理员账号登录RDS实例,执行以下语句:

USE [master]
GO
-- Change the recovery model of the database to FULL. Use the NO_WAIT parameter to allow the change to immediately take effect.
ALTER DATABASE [ReportServer] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [ReportServerTempDB] SET RECOVERY FULL WITH NO_WAIT
GO
-- Enable a specific trigger on all databases on the server.
ENABLE TRIGGER [_$$_tr_$$_rds_alter_database] ON ALL SERVER;

7. 后续操作(如创建数据源)根据业务需要而有所不同。具体操作,请参见在ECS上安装并使用SSRS中的步骤6-步骤8官方文档

查看或更改 SSRS 的状态

1. 登录RDS实例所在的主机。在搜索框中,输入以打开“服务”。services.msc

2. 在“服务(本地)”窗口中,查看 SQL 的状态。Server Reporting Services (MSSQLSERVER)


注意:


SSRS 支持以下启动类型:


• 手动:系统启动时服务不会自动启动,必须手动启动。

• 自动:服务在系统启动时自动启动。

• 自动(延迟启动):服务在系统启动一段时间后自动启动。

• 已禁用:服务已禁用且无法启动。


3. 可选。更改 SSRS 的状态并启动服务。


a) 双击该服务。在弹出的对话框中,修改“启动类型”参数的值。

b) 右键单击该服务。在弹出的对话框中,单击“开始”。

c) 查看 SSRS 的新状态。


常见问题

是否可以通过API接口获取RDS实例的主机名和Webshell的URL来连接RDS实例的主机?


是的,您可以使用 DescribeDBInstanceIpHostname 接口获取 RDS 实例的主机名,然后调用 DescribeHostWebShell 接口获取 LoginUrl(webshell URL)。

注意

• webshell URL 的有效期为 2 分钟。您必须尽早使用该 URL。
• 如果URL无效,您可以调用API获取新的URL。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
|
5月前
|
SQL 安全 关系型数据库
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。 总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。 请看这段代码
563 8
|
2月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
2月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
|
2月前
|
SQL 数据库 Windows
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
|
4月前
|
SQL 数据库 C语言
【sqlite的C语言访问接口】执行SQL语句的接口------sqlite3_exec回调函数的使用
【sqlite的C语言访问接口】执行SQL语句的接口------sqlite3_exec回调函数的使用
|
4月前
|
SQL 安全 数据库连接
sql如何访问网络数据库
访问网络数据库(通常指的是不在本地计算机上而是在网络上的数据库服务器)的SQL操作,其实与访问本地数据库在SQL语句的编写上并没有太大差异。主要的区别在于连接的设置和配置,以及如何确保网络连接的安全性
|
4月前
|
SQL 关系型数据库 Linux
SQL 主机
SQL 主机
20 0
|
5月前
|
SQL 存储 安全
SQL接口如何保护数据库免受未经授权的访问?
【5月更文挑战第21天】SQL接口如何保护数据库免受未经授权的访问?
65 3
|
5月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_95 每次访问的交易次数
「SQL面试题库」 No_95 每次访问的交易次数