使用 AWS Lambda 任务计划程序在亚马逊 EC2 上运行的 SQL Server Express 版中自动执行数据库任务 - AWS 规范指引

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 AWS Lambda 任务计划程序在亚马逊 EC2 上运行的 SQL Server Express 版中自动执行数据库任务

Subhani Shaik,Amazon Web Services

Summary

此模式演示了如何在 SQL Server Express 版(SQL Server 的免费版本)中计划和管理数据库任务。但是,SQL Server Express 版本缺少通常处理自动数据库操作的 SQL Server 代理服务。此模式说明了在亚马逊弹性计算云 (Amazon) 实例上运行的 SQL Server Express 版中,如何使用任务计划程序和 Lambda 作为自动执行数据库任务的替代方案。 EC2

任务计划程序是一种内置 Windows 系统实用程序,便于自动执行例行任务。它提供了一种安排和管理自动化操作的机制,无需再在重复的过程中手动干预。AWS Lambda 是一种无服务器计算服务,可自动运行代码以响应事件,而无需您管理底层基础设施。

先决条件和限制

先决条件

  • 活跃的 AWS 账户

  • 使用 Amazon Virtual Private Cloud(Amazon VPC)创建的虚拟私有云(VPC)

  • 装有 Windows 服务器的亚马逊 EC2 实例

  • 通过 Windows Server 连接到亚马逊实例的亚马逊 Elastic Block Store (A EC2 mazon EBS) 卷

  • SQL Server Express Edition 二进制文件

限制

产品版本

  • 包含 SQL Server Express 版的 SQL Server 2016 或更高版本

架构

下图显示了安装了 SQL Server Express 版的情况下运行的亚马逊 EC2 实例。该实例可通过远程桌面协议 (RDP) 客户端或从中 AWS Systems Manager Session Manager访问。 AWS Key Management Service (AWS KMS) 处理 Amazon EBS 卷的数据加密以确保 data-at-rest安全。基础设施还包括 AWS Identity and Access Management (IAM),它提供访问控制和管理执行 Lambda 函数的权限。Amazon Simple Storage Service(Amazon S3)可存储 Lambda 函数。

运行在私有子网上安装了 SQL Server Express 版的 Amazon EC2 实例。

工具

AWS 服务

其他工具

  • Microsoft SQL Server Management Studio (SSMS) 是一款用于管理 SQL Server 的工具,包括访问、配置和管理 SQL Server 组件。

  • Python 是一种通用的计算机编程语言。您可以使用它在 AWS 云 上构建应用程序、自动执行任务和开发服务。

  • 任务计划程序是一种 Microsoft 工具,您可以用它在计算机上自动安排例行任务。

最佳实践

操作说明

Task说明所需技能

部署 Amazon EC2 实例。

要创建亚马逊 EC2 实例,请打开亚马逊 EC2 控制台,网址为,https://console.aws.amazon.com/ec2/然后从可用于 Windows 服务器的实例列表中选择一个亚马逊系统映像 (AMI)

有关更多信息,请参阅 AWS 文档中的启动 Amazon EC2 实例

DBA、AWS DevOps

安装 SQL Server Express 版本。

要安装 SQL Server Express 版,请完成以下步骤:

  1. 连接到您的 Amazon EC2 实例,请选择一个选项:

  2. 要下载所需的 SQL Server Express 版本,请访问 Microsoft 网站上的 SQL Server 下载页面。

  3. 要安装 SQL Server Express 版,请按照 Microsoft 网站上规划 SQL Server 安装中的说明操作。

DBA、AWS DevOps
Task说明所需技能

确定例行任务。

确定要自动执行的例行任务。例如,下列任务符合自动化的条件:

  • 数据库备份(完整备份、差异备份和事务日志备份)

  • 索引维护和重新组织

  • 统计数据更新

  • 特定于应用程序的操作

  • 数据清理或存档

数据库管理员

准备 SQL 脚本。

要准备 SQL 脚本,请执行以下操作:

  1. 为每项维护任务创建 SQL 查询。下面是用于执行特定数据库备份的 T-SQL 查询示例:Backup Database <Database_Name> To Disk='C:\Backups\Database_Name.bak'

  2. 将脚本文件保存为 <File Name>.sql。然后,将脚本保存到 Amazon EC2 实例或网络文件共享上服务器本地驱动器上可访问的位置。

数据库管理员

配置访问权限。

要配置访问权限,请执行以下操作:

  1. 设置适当的文件系统权限。有关说明,请参阅 Microsoft 网站上的为数据库引擎访问配置文件系统权限

  2. 检查 SQL Server 服务账户是否拥有必要的访问权限。有关说明,请参阅 Microsoft 网站上的配置 Windows 服务账户和权限

  3. 验证远程共享的网络连接。有关更多信息,请参阅 AWS 文档中的使用文件共享访问数据

数据库管理员
Task说明所需技能

创建批处理文件。

  • 要创建批处理文件,请使用文本编辑器键入以下命令。将 usernamepassword 参数值替换为您自己的值。然后将文件保存为 <Name>.bat

sqlcmd -S servername -U username -P password -i <T-SQL query path.sql>
  • 要为 SQL 任务创建批处理文件,请使用文本编辑器并键入以下命令。将 ServerNameDatabaseNameusernamepassword 参数值替换为您自己的值。然后将文件保存为 <Name>.bat

@echo off sqlcmd -S [ServerName] -d [DatabaseName] -U username -P password -i "PathToSQLScript\Script.sql" -o "PathToOutput\Output.txt"
AWS DevOps、DBA

在任务计划程序中创建任务。

要在任务计划程序中创建任务,请使用以下步骤:

  1. 要打开任务计划程序,请在 Windows 搜索中键入 taskschd.msc

  2. 选择操作菜单,然后选择创建基本任务

  3. 名称中,提供任务的名称,然后选择下一步

  4. 触发器中,选择关于任务启动时间的选项,然后选择下一步

  5. 提供任务的开始重复信息,然后选择下一步

  6. 操作部分,选择启动程序,然后选择下一步

  7. 程序/脚本中,指定您在上一个任务中创建的批处理文件的路径,然后选择下一步

  8. 选择结束

要手动运行任务,请右键单击新创建的任务,然后选择运行

数据库管理员

查看任务状态。

要在任务计划程序中查看任务的状态,请使用以下步骤:

  1. 在任务计划程序中,转到任务计划程序库,其中显示了所有任务。

  2. 要查看您之前创建的任务的状态,请选择该任务,然后转到历史记录选项卡。

DBA、AWS DevOps
Task说明所需技能

实施解决方案。

要实施此模式的解决方案,请采用以下步骤:

  1. 创建一个 Lambda 函数。有关说明,请参阅文档中的创建您的第一个 Lambda 函数。 AWS

  2. 计划 Lambda 函数。有关说明,请参阅文档中的按计划调用 Lambda 函数。 AWS

  3. 运行 T-SQL 查询。有关更多信息,请参阅文档中的教程:使用 Lambda 函数访问 Amazon RDS 数据库。 AWS 本教程介绍了如何通过 Lambda 函数连接 Amazon RDS 数据库以运行 SQL 查询

AWS DevOps, DevOps 工程师

问题排查

问题解决方案

Lambda 问题

有关使用时可能遇到的错误和问题的帮助 AWS Lambda,请参阅文档中的 Lambda 问题疑难解答。 AWS

相关资源