创建实例

本页面介绍如何创建 Cloud SQL for SQL Server 实例。

如需详细了解所有实例设置,请参阅实例设置

新创建的实例具有一个 sqlserver 数据库。

创建 Cloud SQL 实例后,您可以通过创建导入数据库来向该实例添加数据库。

在 Cloud SQL 企业 Plus 版和 Cloud SQL 企业版之间选择

创建 Cloud SQL for SQL Server 实例时,您可以从具有多种机器配置的不同机器家族中进行选择,具体取决于 Cloud SQL 版本。

使用 Cloud SQL 企业 Plus 版时,您可以选择两种机器家族:

  • 性能优化:通过 1 vCPU:8 GB RAM 的内存与计算比率,为各种 SQL Server 工作负载提供平衡的性价比。
  • 内存优化:通过 1 vCPU:32 GB RAM,为内存密集型工作负载提供较高的内存与计算比率。内存优化机器非常适合需要执行复杂查询、分析和商业智能报告的 SQL Server 工作负载,在数据处理期间将较大的数据集存储在内存中会使这些工作负载受益。

使用 Cloud SQL 企业版时,您可以根据 vCPU 和内存要求从多种机器配置中进行选择。以下部分展示了每个数据库版本和机器类型的 vCPU 和内存配置:

SQL Server 2017 Express、SQL Server 2019 Express 和 SQL Server 2022 Express

机器类型 vCPU/内存
轻量级
  • 1 个 vCPU,3.75 GB 内存
  • 2 个 vCPU,3.75 GB 内存
  • 4 个 vCPU,3.75 GB 内存
标准
  • 1 个 vCPU,3.75 GB 内存
  • 2 个 vCPU,7.50 GB 内存
  • 4 个 vCPU,15 GB 内存
高内存
  • 4 个 vCPU,26 GB 内存
  • 8 个 vCPU,52 GB 内存
自定义 1-8 个 vCPU,3.75 GB 到 52 GB

SQL Server 2017 Web、SQL Server 2019 Web 和 SQL Server 2022 Web

机器类型 vCPU/内存
轻量级
  • 1 个 vCPU,3.75 GB 内存
  • 2 个 vCPU,3.75 GB 内存
  • 4 个 vCPU,3.75 GB 内存
标准
  • 1 个 vCPU,3.75 GB 内存
  • 2 个 vCPU,7.50 GB 内存
  • 4 个 vCPU,15 GB 内存
高内存
  • 4 个 vCPU,26 GB 内存
  • 8 个 vCPU,52 GB 内存
  • 16 个 vCPU,104 GB 内存
自定义 1-32 个 vCPU,3.75 GB 到 208 GB

SQL Server 2017 Standard、SQL Server 2019 Standard 和 SQL Server 2022 Standard

机器类型 vCPU/内存
轻量级
  • 1 个 vCPU,3.75 GB 内存
  • 2 个 vCPU,3.75 GB 内存
  • 4 个 vCPU,3.75 GB 内存
标准
  • 1 个 vCPU,3.75 GB 内存
  • 2 个 vCPU,7.50 GB 内存
  • 4 个 vCPU,15 GB 内存
高内存
  • 4 个 vCPU,26 GB 内存
  • 8 个 vCPU,52 GB 内存
  • 16 个 vCPU,104 GB 内存
自定义 1-48 个 vCPU,3.75 GB 到 312 GB

SQL Server 2017 Enterprise、SQL Server 2019 Enterprise 和 SQL Server 2022 Enterprise

机器类型 vCPU/内存
轻量级
  • 2 个 vCPU,3.75 GB 内存
  • 4 个 vCPU,3.75 GB 内存
标准
  • 2 个 vCPU,7.50 GB 内存
  • 4 个 vCPU,15 GB 内存
高内存
  • 4 个 vCPU,26 GB 内存
  • 8 个 vCPU,52 GB 内存
  • 16 个 vCPU,104 GB 内存
自定义 2-96 个 vCPU,3.75 GB 到 624 GB

并发多线程

借助 Cloud SQL for SQL Server 上的并发多线程 (SMT),您可以在一个物理核心上将两个虚拟 CPU (vCPU) 作为独立的单独线程运行。 SMT 默认处于启用状态;但是,您可以停用它,这可能会降低许可费用。

停用 SMT 可能会影响实例性能。如需了解停用 SMT 对实例性能的影响,我们建议您对实例执行负载测试

创建实例

控制台

  1. 转到 Google Cloud 控制台中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”

  2. 点击创建实例
  3. 创建实例页面的选择数据库引擎面板上,点击选择 SQL Server
  4. 创建 SQL Server 实例页面的选择 Cloud SQL 版本部分中,选择实例的 Cloud SQL 版本:EnterpriseEnterprise plus

    如需详细了解 Cloud SQL 版本,请参阅 Cloud SQL for SQL Server 版本简介

  5. 选择实例的版本预设值。如需查看可用的预设值,请点击版本预设值菜单。
  6. 实例信息部分,选择实例的数据库版本。如需查看可用版本,请点击数据库版本菜单。
  7. 实例 ID 字段中,输入实例的 ID。

    无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。

  8. 密码字段中,输入用户的密码。
  9. 选择区域和可用区可用性部分,为实例选择区域和可用区。

    将实例与访问实例的资源置于相同区域内。以后无法更改选择的区域。大多数情况下,您不需要指定可用区。

  10. 自定义实例部分,更新实例的设置。例如,您可以防止意外删除实例
  11. 点击创建实例
  12. 实例的初始化过程完成后,点击实例名称将其打开。

gcloud

如需了解如何安装和开始使用 gcloud CLI,请参阅安装 gcloud CLI。如需了解如何启动 Cloud Shell,请参阅 Cloud Shell 文档

您必须使用 gcloud 243.0.0 或更高版本。

如需了解如何保护实例免遭意外删除,请参阅防止删除实例

  1. 创建实例:
    对于 Cloud SQL 企业 Plus 版实例:
    gcloud sql instances create INSTANCE_NAME \
    --database-version=DATABASE_VERSION \
    --region=REGION \
    --tier=TIER \
    --root-password=ROOT_PASSWORD \
    --edition=ENTERPRISE_PLUS
    对于 Cloud SQL 企业版实例:
    gcloud sql instances create INSTANCE_NAME \
    --database-version=DATABASE_VERSION \
    --region=REGION \
    --cpu=NUMBER_OF_vCPUs \
    --memory=MEMORY_SIZE \
    --root-password=ROOT_PASSWORD \
    --edition=ENTERPRISE

    无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。

    如本页面前面所述,Cloud SQL 企业版的 vCPU 和内存大小值受限制。请参阅在 Cloud SQL 企业 Plus 版和 Cloud SQL 企业版之间选择

    例如,以下字符串会创建一个具有两个 vCPU 和 7680 MB 内存的实例:

    gcloud sql instances create myinstance \
    --database-version=SQLSERVER_2017_STANDARD \
    --region=us-central1 \
    --cpu=2 \
    --memory=7680MB \
    --root-password=EXAMPLE_PASSWORD \
    --edition=ENTERPRISE

    如需了解一些示例值,请参阅机器类型示例

    如需了解实例设置的参数,请参阅 gcloud sql instances create

  2. 请记下系统自动分配的 IP 地址。

    如果您未使用 Cloud SQL Auth 代理,则需要使用此地址作为应用或工具用来连接实例的主机地址。

  3. 为用户设置密码:
    gcloud sql users set-password sqlserver no-host --instance=[INSTANCE_NAME] \
           --password=[PASSWORD]

Terraform

如需创建实例,请使用 Terraform 资源

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

REST v1

1. 创建实例

并非所有可能的字段都显示在下面的基本 API 调用中。如需查看 JSON 请求的原型,请参阅设置

另请参阅 Instances:insert 页面。如需了解实例设置,包括针对区域的有效值,请参阅实例设置。如需了解机器类型,请参阅自定义实例配置

请勿在 instance-id 中包含敏感信息或个人身份信息,因为该值对外可见。

无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。

借助 collation 字段(未显示在下面的基本 API 调用中),您可以设置用于实例中数据库的排序规则类型的默认值。此排序规则默认设置在实例级是永久性的,但在数据库级却不是永久性的。您可以使用数据库管理工具更改此默认设置,但仅限于您正在创建或更新的特定数据库。创建实例后,您无法更改其排序规则默认设置(除非您重新创建实例)。如需了解 SQL Server 中的排序规则,请参阅排序规则和 Unicode 支持。如需查看 JSON 请求的原型,请参阅设置。以下是您可以为 collation 参数指定的示例字符串:SQL_Latin1_General_CP1_CI_AS

借助 timeZone 字段(未显示在下面的基本 API 调用中),您可以为实例设置时区。创建实例后,您可以更改实例的时区。如需了解详情和查看接受的字符串列表,请参阅设置。以下是您可以为 timeZone 字段指定的示例字符串:"Pacific Standard Time"查看更多

如需创建与代管式 Microsoft AD 集成的实例,请为 domain 字段指定一个网域,例如 subdomain.mydomain.com。如需了解详情,请参阅使用 Windows 身份验证创建实例。此外,请注意与其他项目中的代管式 AD 域集成的过程和限制条件

如需了解如何在请求正文中设置 machine-type 的值,请参阅自定义实例配置

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID。
  • INSTANCE_ID:实例 ID。
  • REGION:区域名称。
  • DATABASE_VERSION:数据库版本的枚举字符串。 例如:SQLSERVER_2017_STANDARD
  • PASSWORDroot 用户的密码。
  • MACHINE_TYPE:机器(层级)类型的枚举字符串。例如:
    db-perf-optimized-N-4
  • EDITION_TYPE:您的 Cloud SQL 版本。默认值为 ENTERPRISE
  • DATA_CACHE_ENABLED:(可选)如需为您的实例启用数据缓存,请将此参数的值设置为 true

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

请求 JSON 正文:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "dataCacheConfig" = {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

创建实例后,您可以进一步配置默认用户账号

2. 检索实例的 IPv4 地址

您也可以根据情况选择检索系统自动分配的 IPv4 地址。在响应中,该地址包含在 ipAddress 字段中。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID
  • INSTANCE_ID:您在上一步中创建的实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "DATABASE_VERSION",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "MACHINE_TYPE",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "ZONE",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "19:00",
      "kind": "sql#backupConfiguration",
      "enabled": true
    },
    "settingsVersion": "1",
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "PROJECT_ID",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "BACKEND_TYPE",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "connectionName": "PROJECT_ID:REGION:INSTANCE_ID",
  "name": "INSTANCE_ID",
  "region": "REGION",
  "gceZone": "ZONE"
}

REST v1beta4

1. 创建实例

并非所有可能的字段都显示在下面的基本 API 调用中。如需查看 JSON 请求的原型,请参阅设置

另请参阅 Instances:insert 页面。如需了解实例设置,包括针对区域的有效值,请参阅实例设置。如需了解机器类型,请参阅自定义实例配置

请勿在 instance-id 中包含敏感信息或个人身份信息,因为该值对外可见。

无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。

借助 collation 字段(未显示在下面的基本 API 调用中),您可以设置用于实例中数据库的排序规则类型的默认值。此排序规则默认设置在实例级是永久性的,但在数据库级却不是永久性的。您可以使用数据库管理工具更改此默认设置,但仅限于您正在创建或更新的特定数据库。创建实例后,您无法更改其排序规则默认设置(除非您重新创建实例)。如需了解 SQL Server 中的排序规则,请参阅排序规则和 Unicode 支持。如需查看 JSON 请求的原型,请参阅设置。以下是您可以为 collation 参数指定的示例字符串:SQL_Latin1_General_CP1_CI_AS

借助 timeZone 字段(未显示在下面的基本 API 调用中),您可以为实例设置时区。创建实例后,您可以更改实例的时区。如需了解详情和查看接受的字符串列表,请参阅设置。以下是您可以为 timeZone 字段指定的示例字符串:"Pacific Standard Time"查看更多

如需创建与代管式 Microsoft AD 集成的实例,请为 domain 字段指定一个网域,例如 subdomain.mydomain.com。如需了解详情,请参阅使用 Windows 身份验证创建实例。此外,请注意与其他项目中的代管式 AD 域集成的过程和限制条件

如需了解如何在请求正文中设置 machine-type 的值,请参阅自定义实例配置

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID。
  • INSTANCE_ID:实例 ID。
  • REGION:区域名称。
  • DATABASE_VERSION:数据库版本的枚举字符串。
  • MACHINE_TYPE:机器(层级)类型的枚举字符串。例如:
    db-perf-optimized-N-4
  • PASSWORDroot 用户的密码。
  • MACHINE_TYPE:机器(层级)类型的枚举字符串,例如:db-custom-[CPUS]-[MEMORY_MBS]
  • EDITION_TYPE:您的 Cloud SQL 版本。默认值为 ENTERPRISE
  • DATA_CACHE_ENABLED:(可选)如需为您的实例启用数据缓存,请将此参数的值设置为 true

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

请求 JSON 正文:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "dataCacheConfig" = {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

创建实例后,您可以进一步配置默认用户账号

2. 检索实例的 IPv4 地址

您也可以根据情况选择检索系统自动分配的 IPv4 地址。在响应中,该地址包含在 ipAddress 字段中。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID
  • INSTANCE_ID:您在上一步中创建的实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "DATABASE_VERSION",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "MACHINE_TYPE",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "ZONE",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "19:00",
      "kind": "sql#backupConfiguration",
      "enabled": true
    },
    "settingsVersion": "1",
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "PROJECT_ID",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "BACKEND_TYPE",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "connectionName": "PROJECT_ID:REGION:INSTANCE_ID",
  "name": "INSTANCE_ID",
  "region": "REGION",
  "gceZone": "ZONE"
}

生成写入端点

如果您计划创建 Cloud SQL 企业 Plus 版实例,并且希望 Cloud SQL 自动为该实例生成写入端点,请为您的 Google Cloud 项目启用 Cloud DNS API

如果您已经有 Cloud SQL 企业 Plus 版实例,并且希望 Cloud SQL 自动生成写入端点,请创建启用了高级灾难恢复的副本。

写入端点是一个全球域名服务 (DNS) 名称,它会自动解析为主实例的 IP 地址。如果发生副本故障切换或切换操作,此端点会自动将传入连接重定向到新的主实例。您可以在 SQL 连接字符串中使用写入端点,而不是 IP 地址。通过使用写入端点,您可以避免在发生区域级服务中断时不得不更改应用连接。

如需详细了解如何获取实例的写入端点,请参阅查看实例信息。如需详细了解如何使用写入端点连接到实例,请参阅使用写入端点进行连接

自定义实例配置

自定义实例配置允许您选择实例需要的内存大小和 CPU。这种灵活性可让您选择适合您的工作负载的虚拟机形状。机器类型可用性由您的 Cloud SQL 版本决定。

对于需要实时处理的工作负载,请确保实例具有足够的内存,能够容纳整个工作集。但是,还存在其他影响内存要求的因素,例如活跃连接数和内部开销进程。您应该执行负载测试,避免在生产环境中出现性能问题。

配置实例时,请选择足够的内存和 vCPU 来处理您的工作负载,并随着工作负载的增加进行升级。vCPU 不足的机器配置可能会导致不再纳入服务等级协议 (SLA) 的覆盖范围。如需了解详情,请参阅运维指南

Cloud SQL 企业版实例的机器类型

对于 Cloud SQL 企业版实例,您还可以使用 gcloud sql instances create 命令来创建自定义实例配置。

机器类型名称使用以下格式:db-custom-NUMBER_OF_vCPUs-MEMORY

NUMBER_OF_vCPUs 替换为机器中的 CPU 数量,并将 MEMORY 替换为机器中的内存量。

例如,如果您的机器名称为 db-custom,并且您的机器具有 1 个 CPU 和 3840 MB RAM,则机器格式为 db-custom-1-3840

选择 CPU 数量和内存量时,您选择的配置有一些限制:

  • 您可以为实例配置的 vCPU 数量取决于 SQL Server 版本。
  • vCPU 的数量必须为 1 或介于 2 至 96 之间的偶数。
  • 内存大小必须符合以下条件:
    • 每个 vCPU 的内存量介于 0.9 至 6.5 GB 之间
    • 内存量是 256 MB 的倍数
    • 内存量至少为 3.75 GB (3840 MB)

Cloud SQL 企业 Plus 版实例的机器类型

对于 Cloud SQL 企业 Plus 版实例,机器类型按照以下部分所述进行预定义。

性能优化型机器家族

此机器家族为各种 SQL Server 工作负载提供平衡的性价比,内存与计算比率为 1 vCPU:8 GB RAM。性能优化机器家族提供以下机器类型供您选择:

企业 Plus 版机器类型 vCPU 数量 内存 (GB)
db-perf-optimized-N-2 2 16
db-perf-optimized-N-4 4 32
db-perf-optimized-N-8 8 64
db-perf-optimized-N-16 16 128
db-perf-optimized-N-32 32 256
db-perf-optimized-N-48 48 384
db-perf-optimized-N-64 64 512
db-perf-optimized-N-80 80 640
db-perf-optimized-N-96 96 768
db-perf-optimized-N-128 128 864

内存优化机器家族

此机器家族通过 1 vCPU:32 GB RAM,为内存密集型工作负载提供较高的内存与计算比率。内存优化型机器非常适合需要执行复杂查询、分析和商业智能报告的 SQL Server 工作负载,在数据处理期间将较大的数据集存储在内存中会使这些工作负载受益。内存优化机器家族提供以下机器类型供您选择:

机器类型 vCPU 内存 (GB)
db-memory-optimized-N-4 4 128
db-memory-optimized-N-8 8 256
db-memory-optimized-N-16 16 512

问题排查

问题 问题排查
错误消息:Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID] 尝试再次创建 Cloud SQL 实例。

后续步骤