您现在访问的是微软AZURE全睃版技术文档网站,若需覝访问由世纪互蝔违蝥的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

创建、配置和管理弹性作业(预览版)

适用于: Azure SQL 数据库

在本文中,你将了解如何创建、配置和管理弹性作业。

如果未使用弹性作业,请详细了解 Azure SQL 数据库中的作业自动化概念

创建并配置代理

  1. 创建或标识空的 S0 或更高级别的数据库。 该数据库在弹性作业代理创建期间将用作“作业数据库”。

  2. 通过门户PowerShell 创建弹性作业代理。

    创建弹性作业代理

创建、运行和管理作业

  1. 使用 PowerShellT-SQL 在作业数据库中创建执行作业所需的凭据。

  2. 使用 PowerShellT-SQL 定义目标组(需对其运行作业的数据库)。

  3. 在作业将运行的每个数据库中创建作业代理凭据(向组中的每个数据库添加用户(或角色))。 有关示例,请参阅 PowerShell 教程

  4. 使用 PowerShellT-SQL 创建作业。

  5. 使用 PowerShellT-SQL 添加作业步骤。

  6. 使用 PowerShellT-SQL 运行作业。

  7. 使用门户、PowerShellT-SQL 监视作业执行状态。

    门户

运行作业所需的凭据

作业在执行时使用数据库范围的凭据连接到目标组指定的数据库。 如果目标组包含服务器或池,则可使用这些数据库范围的凭据连接到 master 数据库,以便枚举可用的数据库。

设置运行作业所需的适当凭据可能不太容易,因此请注意以下要点:

  • 必须在作业数据库中创建数据库范围的凭据。
  • 所有目标数据库必须有一个具有 足够权限的登录名,否则作业无法成功完成(下图中的 jobuser)。
  • 凭据可以跨作业反复使用,而凭据密码经过加密后,无法供只能通过只读方式访问作业对象的用户访问。

下图旨在帮助用户了解和设置适当的作业凭据。 记住在作业需运行的每个数据库(所有目标用户数据库)中创建该用户

弹性作业凭据

安全最佳做法

使用弹性作业时的一些最佳做法注意事项:

  • 将 API 的使用限制为受信任的个人。
  • 凭据应该具有执行作业步骤所需的最低权限。 有关详细信息,请参阅授权和权限
  • 使用服务器和/或池目标组成员时,强烈建议创建另外一个凭据,该凭据有权在 master 数据库上查看/列出数据库,用于在作业执行之前展开服务器和/或池的数据库列表。

代理性能、容量和限制

弹性作业在等待长时间运行的作业完成时使用极少的计算资源。

根据目标数据库组的大小和作业所需执行时间(并发辅助角色数)的不同,代理需要的计算量和作业数据库性能也会有所不同(目标数和作业数越多,所需计算量越大)。

目前,预览版的限制是 100 个并发作业。

防止作业降低目标数据库性能

若要确保针对 SQL 弹性池中的数据库运行作业时资源不会超负荷,可以对作业进行配置,限制可以在同一时间对其运行作业的数据库数。

通过在 T-SQL 中设置 sp_add_jobstep 存储过程的 @max_parallelism 参数来设置作业运行时所在的并发数据库的数目。

创建作业的最佳做法

幂等脚本

作业的 T-SQL 脚本必须幂等。 “幂等”是指如果脚本成功,则再次运行时,会出现相同的结果。 脚本可能由于暂时性网络问题而失败。 在此情况下,作业会自动重试运行脚本,达到默认的次数才停止。 即使幂等脚本已成功运行两次(或更多次),也仍会返回相同的结果。

一个简单的策略是在创建对象之前测试其是否存在。 下面显示了假设示例:

IF NOT EXISTS (SELECT * FROM sys.objects WHERE [name] = N'some_object')
    print 'Object does not exist'
    -- Create the object
ELSE
    print 'Object exists'
    -- If it exists, drop the object before recreating it.

同样地,脚本必须以逻辑方式测试并反驳它所找到的任何条件,才能成功执行。

后续步骤