如何强制 Azure SQL(无服务器)暂停?

MYK*_*MYK 6 azure-sql-database

我们运行 Azure SQL 数据库(无服务器)作为 PoC 的一部分。我们现在正在测试一些其他解决方案,因此我们想强制数据库暂停几天。IE。我们只想支付几天的存储费用。

数据库显示的使用量较低,导致数据库表单自动暂停(导致持续计费,符合与数据库存储使用相关的最小 vCore)

如何强制无服务器数据库暂停?

Stu*_*tLC 3

您无法显式/以编程方式强制 Azure SQL Serverless 暂停 - 只有在配置的“自动暂停延迟”设置(至少 1 小时)未检测到连接或 CPU 活动后,数据库才会暂停。任何连接(例如来自应用程序的连接池)或其他无意的后台活动都将重置暂停计时器(并产生费用)。(几乎)保证暂停的唯一方法是停止使用数据库的所有应用程序并终止所有连接,然后等待(至少)一个小时。

您可能会考虑的替代方案是在不活动期间自动执行层更改(而不是依靠暂停来触发),尤其是在测试环境中。

例如,如果您预计周末不会出现大量数据库负载,您可以将作业安排在周五晚上:

  ALTER DATABASE [MY_TEST_DB] 
  MODIFY(EDITION='Standard', SERVICE_OBJECTIVE='S0');
Run Code Online (Sandbox Code Playgroud)

S0 会将数据库降低到 10 DTU 级别,在撰写本文时每月约为 20 美元。如果您的数据库大小低于 2GB,那么您甚至可以降至“基本”级别。

根据数据库当前的大小,可能无法提供最低的定价 -此处的图表

数据库可以在周一早上返回到Serverless:

 ALTER DATABASE [MY_TEST_DB] 
 MODIFY(EDITION='GeneralPurpose' , SERVICE_OBJECTIVE='GP_S_Gen5_1');
Run Code Online (Sandbox Code Playgroud)

其中,上述内容将数据库更改为无服务器 vCore Gen 5,最多 1 个 vCore。在缩小无服务器 SKU 规模之前,建议您运行:

  SELECT DATABASEPROPERTYEX('MY_TEST_DB', 'ServiceObjective');
Run Code Online (Sandbox Code Playgroud)

并记下您最初的无服务器目标设置,以便您可以返回到该值。

笔记:

  • 当在基于廉价 DTU 的层上时,数据库将始终可用(从不暂停),但会以较低的费率计费,因为功能将大大减少。
  • 您至少需要db_owner,也许还需要其他 AD 资源权限才能执行ALTER DATABASE .. MODIFY
  • 数据库层在各层之间更改可能需要几分钟的时间
  • 版本似乎未经过验证,因此如果您输入错误的版本,则不会收到错误。有效值似乎是BasicStandardGeneralPurpose
  • 您可以在 Azure 门户上确认层更改