Amazon RDS for SQL Server 中的 SQL Server Reporting Services 支持
Microsoft SQL Server Reporting Services (SSRS) 是一个基于服务器的应用程序,用于生成和分发报告。它是 SQL Server 服务套件的一部分,其中还包括 SQL Server Analysis Services (SSAS) 和 SQL Server Integration Services (SSIS)。SSRS 是在 SQL Server 之上构建的服务。您可以使用它从各种数据源收集数据,并以易于理解和直接可供分析的方式呈现。
Amazon RDS for SQL Server 支持直接在 RDS 数据库实例上运行 SSRS。您可以将 SSR 用于现有或新的数据库实例。
RDS 在以下版本上对于 SQL Server 标准版和企业版支持 SSRS:
-
SQL Server 2019,版本 15.00.4043.16.v1 和更高版本
-
SQL Server 2017,版本 14.00.3223.3.v1 和更高版本
-
SQL Server 2016,版本 13.00.5820.21.v1 和更高版本
目录
限制和建议
以下限制和建议适用于在 RDS for SQL Server 上运行 SSRS:
-
您不能在具有只读副本的数据库实例上使用 SSRS。
-
实例必须为 SSRS Web 门户和 Web 服务器身份验证使用 AWS Managed Microsoft AD。
-
不支持从 SSRS 的其他实例导入和恢复报告服务器数据库。
确保使用在将
SSRS
选项添加到 RDS 数据库实例时创建的数据库。有关更多信息,请参阅“报告服务器数据库”。 -
您无法将 SSRS 配置为侦听默认 SSL 端口 (443)。允许的值为 1150–49511,但不包括 1234、1434、3260、3343、3389 和 47001。
-
不支持通过 Microsoft Windows 文件共享进行订阅。
-
不支持使用报告服务配置管理器。
-
不支持创建和修改角色。
-
不支持修改报告服务器属性。
-
未授予系统管理员和系统用户角色。
-
无法通过 Web 门户编辑系统级角色分配。
开启 SSRS
使用以下过程为数据库实例开启 SSRS:
-
创建新的选项组或选择现有的选项组。
-
将
SSRS
选项添加到该选项组。 -
将选项组与数据库实例相关联。
-
允许对 SSRS 侦听器端口的 Virtual Private Cloud (VPC) 安全组进行入站访问。
为 SSRS 创建选项组
要使用 SSRS,请创建对应于计划使用的 SQL Server 引擎和数据库实例版本的选项组。为此,请使用 AWS Management Console或 AWS CLI。
如果现有选项组针对的是正确的 SQL Server 引擎和版本,也可以使用现有选项组。
以下过程创建适用于 SQL Server 标准版 2017 的选项组。
创建选项组
登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择选项组。
-
选择创建组。
-
在创建选项组窗格中,执行以下操作:
-
对于 Name(名称),输入选项组的名称,该名称在 AWS 账户内具有唯一性,例如
ssrs-se-2017
。此名称只能包含字母、数字和连字符。 -
对于描述,输入选项组的简要描述,例如
SSRS option group for SQL Server SE 2017
。此说明用于显示说明。 -
对于引擎,选择 sqlserver-se。
-
对于主引擎版本,选择 14.00。
-
-
选择 Create (创建) 。
以下过程创建适用于 SQL Server 标准版 2017 的选项组。
创建选项组
-
运行以下命令之一。
对于 Linux、macOS 或 Unix:
aws rds create-option-group \ --option-group-name
ssrs-se-2017
\ --engine-namesqlserver-se
\ --major-engine-version14.00
\ --option-group-description "SSRS option group for SQL Server SE 2017
"
对于 Windows:
aws rds create-option-group ^ --option-group-name
ssrs-se-2017
^ --engine-namesqlserver-se
^ --major-engine-version14.00
^ --option-group-description "SSRS option group for SQL Server SE 2017
"
将 SSRS 选项添加到选项组
接下来,使用 AWS Management Console或 AWS CLI 将 SSRS
选项添加到您的选项组。
添加 SSRS 选项
登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择选项组。
-
选择刚创建的选项组,然后选择 Add Option(添加选项)。
-
在选项详细信息下,为选项名称选择 SSRS。
-
在选项设置下,执行以下操作:
-
输入 SSRS 服务要侦听的端口。默认值为 8443。有关允许值的列表,请参阅 限制和建议。
-
输入最大内存的值。
最大内存指定阈值上限,超过该阈值后,不会允许报告服务器应用程序的新内存分配请求。该数字是占数据库实例总内存的百分比。允许的值为 10–80。
-
对于 Security groups (安全组),请选择要与选项关联的 VPC 安全组。使用与您数据库实例关联的相同安全组。
-
-
要使用 SSRS 电子邮件发送报告,选择 Email delivery in reporting services(报告服务中的电子邮件递送)下的 Configure email delivery options(配置电子邮件递送选项)复选框,然后执行以下操作:
-
对于 Sender email address(发件人电子邮件地址),在 SSRS 电子邮件发送的邮件的 From(发件人)字段中输入要使用的电子邮件地址。
指定有权从 SMTP 服务器发送邮件的用户账户。
-
对于 SMTP server(SMTP 服务器),请指定要使用的 SMTP 服务器或网关。
它可以是 IP 地址、公司内部网中计算机的 NetBIOS 名称或完全限定域名。
-
对于 SMTP port(SMTP 端口),输入要用于连接到邮件服务器的端口。默认值为 25。
-
要使用身份验证:
-
选择 Use authentication(使用身份验证)复选框。
-
对于 Secret Amazon Resource Name (ARN) [密钥 Amazon 资源名称(ARN)],输入用户凭证的 AWS Secrets Manager ARN。
使用以下格式:
arn:aws:secretsmanager:
Region
:AccountId
:secret:SecretName
-6RandomCharacters
例如:
arn:aws:secretsmanager:
us-west-2
:123456789012
:secret:MySecret-a1b2c3
有关创建密钥的更多信息,请参阅使用 SSRS 电子邮件发送报告。
-
-
选中 Use Secure Sockets Layer (SSL) [使用安全套接字层 (SSL)] 复选框可使用 SSL 加密电子邮件。
-
-
在 计划 (Scheduling) 下,选择是立即添加选项还是在下一个维护时段添加选项。
-
选择添加选项。
添加 SSRS 选项
-
创建 JSON 文件,例如:
ssrs-option.json
。-
设置以下必需参数:
-
OptionGroupName
– 您之前创建或选择的选项组的名称(以下示例中的ssrs-se-2017
)。 -
Port
– SSRS 服务要侦听的端口。默认值为 8443。有关允许值的列表,请参阅 限制和建议。 -
VpcSecurityGroupMemberships
– RDS 数据库实例的 VPC 安全组成员。 -
MAX_MEMORY
– 阈值上限,超过该阈值后,不会允许报告服务器应用程序的新内存分配请求。该数字是占数据库实例总内存的百分比。允许的值为 10–80。
-
-
(可选)设置以下参数以使用 SSRS 电子邮件:
-
SMTP_ENABLE_EMAIL
– 设置为true
以使用 SSRS 电子邮件。默认为false
。 -
SMTP_SENDER_EMAIL_ADDRESS
– SSRS 电子邮件发送的邮件的 From(发件人)字段中要使用的电子邮件地址。指定有权从 SMTP 服务器发送邮件的用户账户。 -
SMTP_SERVER_NAME
– 要使用的 SMTP 服务器或网关。它可以是 IP 地址、公司内部网中计算机的 NetBIOS 名称或完全限定域名。 -
SMTP_PORT
– 用于连接到邮件服务器的端口。默认值为 25。 -
SMTP_USE_SSL
– 设置为true
以使用 SSL 加密电子邮件。默认为true
。 -
SMTP_EMAIL_CREDENTIALS_SECRET_ARN
– 用于保存用户凭证的 Secrets Manager ARN。采用以下格式:arn:aws:secretsmanager:
Region
:AccountId
:secret:SecretName
-6RandomCharacters
有关创建密钥的更多信息,请参阅使用 SSRS 电子邮件发送报告。
-
SMTP_USE_ANONYMOUS_AUTHENTICATION
– 设置为true
,如果不想使用身份验证,则不包括SMTP_EMAIL_CREDENTIALS_SECRET_ARN
。当
SMTP_ENABLE_EMAIL
为true
时,原定设置值为false
。
-
以下示例包含使用密钥 ARN 的 SSRS 电子邮件参数。
{ "OptionGroupName": "
ssrs-se-2017
", "OptionsToInclude": [ { "OptionName": "SSRS", "Port":8443
, "VpcSecurityGroupMemberships": ["sg-0abcdef123
"], "OptionSettings": [ {"Name": "MAX_MEMORY","Value": "60
"}, {"Name": "SMTP_ENABLE_EMAIL","Value": "true
"} {"Name": "SMTP_SENDER_EMAIL_ADDRESS","Value": "nobody@example.com
"}, {"Name": "SMTP_SERVER_NAME","Value": "email-smtp.us-west-2
.amazonaws.com"}, {"Name": "SMTP_PORT","Value": "25
"}, {"Name": "SMTP_USE_SSL","Value": "true
"}, {"Name": "SMTP_EMAIL_CREDENTIALS_SECRET_ARN","Value": "arn:aws:secretsmanager:us-west-2
:123456789012
:secret:MySecret-a1b2c3
"} ] }], "ApplyImmediately": true } -
-
将
SSRS
选项添加到该选项组。对于 Linux、macOS 或 Unix:
aws rds add-option-to-option-group \ --cli-input-json file://
ssrs-option.json
\ --apply-immediately对于 Windows:
aws rds add-option-to-option-group ^ --cli-input-json file://
ssrs-option.json
^ --apply-immediately
将选项组与数据库实例关联
使用 AWS Management Console 或 AWS CLI 将您的选项组与数据库实例关联。
如果您使用现有数据库实例,则该实例必须已经关联了 Active Directory 域和 AWS Identity and Access Management (IAM) 角色。如果您创建新实例,请指定现有的 Active Directory 域和 IAM 角色。有关更多信息,请参阅 将 Windows 身份验证与 Amazon RDS for SQL Server 数据库实例结合使用。
您可将您的选项组与新的或现有的数据库实例关联:
-
对于新数据库实例,请在启动实例时关联选项组。有关更多信息,请参阅“创建 Amazon RDS 数据库实例”。
-
对于现有数据库实例,请修改实例并关联新选项组。有关更多信息,请参阅 修改 Amazon RDS 数据库实例。
您可将您的选项组与新的或现有的数据库实例关联。
创建使用选项组的数据库实例
-
指定创建选项组时使用的相同数据库引擎类型和主要版本。
对于 Linux、macOS 或 Unix:
aws rds create-db-instance \ --db-instance-identifier
myssrsinstance
\ --db-instance-classdb.m5.2xlarge
\ --enginesqlserver-se
\ --engine-version14.00.3223.3.v1
\ --allocated-storage100
\ --master-user-passwordsecret123
\ --master-usernameadmin
\ --storage-typegp2
\ --license-modelli
\ --domain-iam-role-namemy-directory-iam-role
\ --domainmy-domain-id
\ --option-group-namessrs-se-2017
对于 Windows:
aws rds create-db-instance ^ --db-instance-identifier
myssrsinstance
^ --db-instance-classdb.m5.2xlarge
^ --enginesqlserver-se
^ --engine-version14.00.3223.3.v1
^ --allocated-storage100
^ --master-user-passwordsecret123
^ --master-usernameadmin
^ --storage-typegp2
^ --license-modelli
^ --domain-iam-role-namemy-directory-iam-role
^ --domainmy-domain-id
^ --option-group-namessrs-se-2017
修改数据库实例以使用选项组
-
运行以下命令之一。
对于 Linux、macOS 或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
myssrsinstance
\ --option-group-namessrs-se-2017
\ --apply-immediately对于 Windows:
aws rds modify-db-instance ^ --db-instance-identifier
myssrsinstance
^ --option-group-namessrs-se-2017
^ --apply-immediately
允许对 VPC 安全组的入站访问
要允许对与您数据库实例关联的 VPC 安全组的入站访问,请为指定的 SSRS 侦听器端口创建入站规则。有关设置安全组的更多信息,请参阅通过创建安全组提供对 VPC 中的数据库实例的访问。
报告服务器数据库
当您的数据库实例与 SSRS 选项关联时,将在您的数据库实例上创建两个新的数据库:rdsadmin_ReportServer 和 rdsadmin_ReportServerTempDB。这些数据库充当 ReportServer 和 ReportServerTempDB 数据库。SSRS 将其数据存储在 ReportServer 数据库中,并将其数据缓存在 ReportServerTempDB 数据库中。
RDS 拥有和管理这些数据库,因此不允许对它们进行 ALTER 和 DROP 等数据库操作。但是,您可以对 rdsadmin_ReportServer 数据库执行读取操作。
SSRS 日志文件
您可以访问 ReportserverService_timestamp
.log 文件。可以在 D:\rdsdbdata\Log\SSRS
目录中找到这些报表服务器日志。(D:\rdsdbdata\Log
目录也是错误日志和 SQL Server 代理日志的父目录。)
对于现有 SSRS 实例,可能需要重启 SSRS 服务才能访问报表服务器日志。可以通过更新 SSRS
选项来重启服务。
有关更多信息,请参阅使用 Microsoft SQL Server 日志。
访问 SSRS Web 门户
使用以下过程访问 SSRS Web 门户:
-
开启安全套接字层(SSL)。
-
将访问权限授予域用户。
-
使用浏览器和域用户凭证访问 Web 门户。
在 RDS 上使用 SSL
SSRS 为其连接使用 HTTPS SSL 协议。若要使用此协议,请将 SSL 证书导入客户端计算机上的 Microsoft Windows 操作系统。
有关 SSL 证书的更多信息,请参阅使用 SSL/TLS 加密与数据库实例的连接。有关将 SSL 与 SQL Server 一起使用的更多信息,请参阅将 SSL 与 Microsoft SQL Server 数据库实例结合使用。
将访问权限授予域用户
在新的 SSRS 激活中,SSRS 中没有角色分配。为了授予域用户或用户组访问 Web 门户的访问权限,RDS 提供了一个存储过程。
向 Web 门户上的域用户授予访问权限
-
使用以下存储过程。
exec msdb.dbo.rds_msbi_task @task_type='SSRS_GRANT_PORTAL_PERMISSION', @ssrs_group_or_username=N'
AD_domain
\user
';
向域用户或用户组授予 RDS_SSRS_ROLE
系统角色。此角色授予了以下系统级任务:
-
运行报告
-
管理作业。
-
管理共享计划
-
查看共享计划
还授予根文件夹上 Content Manager
的项目级角色。
访问 Web 门户
SSRS_GRANT_PORTAL_PERMISSION
任务成功完成后,您具有使用 Web 浏览器访问门户的权限。Web 门户 URL 的格式如下。
https://
rds_endpoint
:port
/Reports
在此格式中,以下项适用:
-
– 与 SSRS 一起使用的 RDS 数据库实例的终端节点。rds_endpoint
您可以在数据库实例的连接和安全性选项卡上找到终端节点。有关更多信息,请参阅“连接到运行 Microsoft SQL Server 数据库引擎的数据库实例”。
-
– 您在port
SSRS
选项中设置的 SSRS 侦听器端口。
访问 Web 门户
-
在浏览器中输入 Web 门户网址。
https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/Reports
-
使用您通过
SSRS_GRANT_PORTAL_PERMISSION
任务授予访问权限的域用户的凭证登录。
将报告部署到 SSRS
访问 Web 门户后,您可以将报告部署到其中。您可以使用 Web 门户中的上传工具来上传报告,或直接从 SQL Server Data Tools (SSDT)
-
启动 SSDT 的用户可以访问 SSRS Web 门户。
-
SSRS 项目属性中的
TargetServerURL
值设置为带ReportServer
后缀的 RDS 数据库实例的 HTTPS 终端节点,例如:https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/ReportServer
使用 SSRS 电子邮件发送报告
SSRS 包括 SSRS 电子邮件扩展,您可以使用它向用户发送报告。
要配置 SSRS 电子邮件,请使用 SSRS
选项设置。有关更多信息,请参阅将 SSRS 选项添加到选项组。
配置 SSRS 电子邮件后,您可以在报告服务器上订阅报表。有关更多信息,请参阅 Microsoft 文档中的报告服务中的电子邮件递送
与 AWS Secrets Manager 集成是 SSRS 电子邮件在 RDS 上运行所必需的。要与 Secrets Manager 集成,您需要创建密钥。
如果您稍后更改密钥,则还必须更新选项组中的 SSRS
选项。
为 SSRS 电子邮件创建密钥
-
按照《AWS Secrets Manager 用户指南》中创建密钥的步骤操作。
-
对于选择密钥类型,选择其他密钥类型。
-
对于 Key/value pairs(键值对),输入以下内容:
-
SMTP_USERNAME
– 输入有权从 SMTP 服务器发送邮件的用户。 -
SMTP_PASSWORD
– 输入 SMTP 用户的密码。
-
-
对于 Encryption key(加密密钥),不要使用原定设置 AWS KMS key。使用您自己的现有密钥,或创建新密钥。
KMS 密钥策略必须允许
kms:Decrypt
操作,例如:{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*" }
-
-
按照《AWS Secrets Manager 用户指南》中的将权限策略附加到密钥中的步骤进行操作。权限策略将
secretsmanager:GetSecretValue
操作提供给rds.amazonaws.com
服务主体。我们建议您在策略中使用
aws:sourceAccount
和aws:sourceArn
条件,以避免出现混淆代理人问题。将您的 AWS 账户用于aws:sourceAccount
,并将选项组 ARN 用于aws:sourceArn
。有关更多信息,请参阅防范跨服务混淆代理问题。下面显示了一个示例权限策略。
{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "Service" : "rds.amazonaws.com" }, "Action" : "secretsmanager:GetSecretValue", "Resource" : "*", "Condition" : { "StringEquals" : { "aws:sourceAccount" : "
123456789012
" }, "ArnLike" : { "aws:sourceArn" : "arn:aws:rds:us-west-2:123456789012
:og:ssrs-se-2017
" } } } ] }有关更多示例,请参阅《AWS Secrets Manager 用户指南》中的权限策略示例。
撤销系统级权限
RDS_SSRS_ROLE
系统角色没有足够的权限来删除系统级角色分配。要从 RDS_SSRS_ROLE
中删除用户或用户组,请使用在授予角色时使用的相同存储过程,但使用 SSRS_REVOKE_PORTAL_PERMISSION
任务类型。
撤消域用户对 Web 门户的访问权限
-
使用以下存储过程。
exec msdb.dbo.rds_msbi_task @task_type='SSRS_REVOKE_PORTAL_PERMISSION', @ssrs_group_or_username=N'
AD_domain
\user
';
执行此操作将从 RDS_SSRS_ROLE
系统角色中删除用户。如果用户有 Content Manager
项目级角色,则还会从其中删除该用户。
监控任务的状态
要跟踪您的授予或撤消任务的状态,请调用 rds_fn_task_status
函数。它获取两个参数。第一个参数应该始终为 NULL
,因为它不适用于 SSRS。第二个参数接受任务 ID。
要查看所有任务的列表,请将第一个参数设置为 NULL
,将第二个参数设置为 0
,如以下示例所示。
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,
0
);
要获取特定任务,请将第一个参数设置为 NULL
,将第二个参数设置为任务 ID,如以下示例所示。
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,
42
);
rds_fn_task_status
函数将返回以下信息。
输出参数 |
描述 |
---|---|
|
任务的 ID。 |
|
对于 SSRS,任务可以具有以下任务类型:
|
|
不适用于 SSRS 任务。 |
|
用百分比表示的任务进度。 |
|
在任务上花费的时间 (以分钟为单位)。 |
|
任务的状态。有以下可能状态:
|
|
有关任务的其他信息。如果在处理过程中发生错误,则此列包含有关错误的信息。 |
|
上次更新任务状态的日期和时间。 |
|
任务的创建日期和时间。 |
|
不适用于 SSRS 任务。 |
|
不适用于 SSRS 任务。 |
|
不适用于 SSRS 任务。 |
|
不适用于 SSRS 任务。 |
|
不适用于 SSRS 任务。 |
|
与 SSRS 任务关联的元数据。 |
关闭 SSRS
要关闭 SSRS,请从其选项组中删除 SSRS
选项。删除该选项不会删除 SSRS 数据库。有关更多信息,请参阅删除 SSRS 数据库。
您可以通过重新添加 SSRS
选项以再次开启 SSRS。如果您还删除了 SSRS 数据库,则在同一数据库实例上重新添加此选项会创建新的报告服务器数据库。
从其选项组中删除 SSRS 选项
登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择选项组。
-
选择具有
SSRS
选项的选项组(在前面的示例中为ssrs-se-2017
)。 -
选择 Delete option (删除选项)。
-
在删除选项下,为待删除的选项选择 SSRS。
-
在 Apply immediately (立即应用) 下,选择 Yes (是) 可立即删除选项,选择 No (否) 可在下次维护时段时删除。
-
选择 Delete(删除)。
从其选项组中删除 SSRS 选项
-
运行以下命令之一。
对于 Linux、macOS 或 Unix:
aws rds remove-option-from-option-group \ --option-group-name
ssrs-se-2017
\ --options SSRS \ --apply-immediately对于 Windows:
aws rds remove-option-from-option-group ^ --option-group-name
ssrs-se-2017
^ --options SSRS ^ --apply-immediately
删除 SSRS 数据库
删除 SSRS
选项不会删除报告服务器数据库。要删除数据库,请使用以下存储过程。
要删除报表服务器数据库,请务必先删除 SSRS
选项。
删除 SSRS 数据库
-
使用以下存储过程。
exec msdb.dbo.rds_drop_ssrs_databases