【问题标题】:How to set DTU for Azure Sql Database via SQL when copying?复制时如何通过 SQL 为 Azure Sql 数据库设置 DTU?
【发布时间】:2023-03-30 05:51:01
【问题描述】:

我知道您可以通过在目标服务器的 [master] 数据库中运行以下 SQL 命令来复制现有数据库来创建新的 Azure SQL 数据库:

CREATE DATABASE [New_DB_Name] AS COPY OF [Azure_Server_Name].[Existing_DB_Name]

我想知道是否可以在创建副本时更改副本将拥有的 DTU 数量?

作为一个真实的例子,如果我们复制一个 [prod] 数据库来创建一个新的 [qa] 数据库,则该副本可能只需要资源来处理一个小型测试团队访问 QA 数据库,而不是一个完整的生产受众.缩小分配的 DTU 会导致更便宜的 DB。目前,我们在复制完成后手动扩展,但这需要与初始复制一样长的时间(对于我们较大的数据库来说是几个小时),因为它再次复制数据库。在理想情况下,我们希望跳过该步骤并能够完全自动化复制过程。

【问题讨论】:

  • 如果有人尝试此操作并遇到问题,请尝试让管理员用户在源数据库和目标数据库上使用相同的用户名和密码。

标签: azure-sql-database


【解决方案1】:

根据文档是:

CREATE DATABASE database_name  
    AS COPY OF [source_server_name.] source_database_name  
    [ ( SERVICE_OBJECTIVE = 
      {  'basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4'| 'S6'| 'S7'| 'S9'| 'S12' |  
      | 'GP_GEN4_1' | 'GP_GEN4_2' | 'GP_GEN4_4' | 'GP_GEN4_8' | 'GP_GEN4_16' | 'GP_GEN4_24' |
      | 'BC_GEN4_1' | 'BC_GEN4_2' | 'BC_GEN4_4' | 'BC_GEN4_8' | 'BC_GEN4_16' | 'BC_GEN4_24' |
      | 'GP_GEN5_2' | 'GP_GEN5_4' | 'GP_GEN5_8' | 'GP_GEN5_16' | 'GP_GEN5_24' | 'GP_GEN5_32' | 'GP_GEN5_48' | 'GP_GEN5_80' |
      | 'BC_GEN5_2' | 'BC_GEN5_4' | 'BC_GEN5_8' | 'BC_GEN5_16' | 'BC_GEN5_24' | 'BC_GEN5_32' | 'BC_GEN5_48' | 'BC_GEN5_80' |
        | { ELASTIC_POOL(name = <elastic_pool_name>) } } )  
   ]  
[;] 

CREATE DATABASE (sqldbls)

您还可以在从 PowerShell API 复制期间更改 DTU 级别

New-AzureRmSqlDatabaseCopy

但您只能选择“同一服务层(版本)内的不同性能级别”Copy an Azure SQL Database

但是,您可以将数据库复制到同一服务层的弹性池中,这样您就不会分配 DTU 资源。您可能有一个用于所有 dev/test/qa 数据库的池,并将副本放在那里。

如果您想更改服务层级,您可以使用时间点还原而不是数据库副本。可以使用门户、PowerShell 或 REST 将数据库恢复到任何服务层或性能级别。

Recover an Azure SQL database using automated database backups

【讨论】:

  • 正是我所追求的!
猜你喜欢
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
  • 2018-11-06
相关资源
最近更新 更多