Stay organized with collections Save and categorize content based on your preferences.
This page describes how to create a Cloud SQL for SQL Server instance.
For detailed information about all instance settings, see Instance settings.
A newly-created instance has a sqlserver
database.
After creating a Cloud SQL for SQL Server instance, you add databases to it by creating or importing them.
The maximum number of instances you can have in a single project depends on the network architecture of those instances:
File a support case to request an increase. Read replicas are counted as instances.
Note: This page contains features related to Cloud SQL editions. For more information about Cloud SQL editions, see Introduction to Cloud SQL editions. Choose between Cloud SQL Enterprise Plus edition and Cloud SQL Enterprise editionWhen creating a Cloud SQL for SQL Server instance, you choose the machine configuration from several different machine families, depending on the Cloud SQL edition.
With Cloud SQL Enterprise Plus edition, you choose from two machine families:
With Cloud SQL Enterprise edition, you have several machine configurations to choose from, based on your vCPU and memory requirements. The following sections show the vCPU and memory configuration for each database version and machine type:
SQL Server 2017 Express, SQL Server 2019 Express, and SQL Server 2022 Express Machine type vCPU/Memory Not applicableSimultaneous multithreading (SMT) on Cloud SQL for SQL Server lets you run two virtual CPUs (vCPUs) as independent, separate threads on one physical core. SMT is enabled by default; however, you can disable it, and this might reduce your licensing costs.
Important: Disabling SMT reduces the number of virtual CPUs (vCPUs) per core from two to one, which in turn reduces your SQL Server licensing costs. Disabling SMT doesn't change the Compute Engine price for SQL Server. You are billed for the number of vCPUs defined in the SQL Server CPU configuration. To learn more about how you are billed for Cloud SQL for SQL Server instances, see SQL Server pricing.Disabling SMT might impact your instance performance. To understand the impact of disabling SMT on your instance's performance, we recommend that you perform load testing on your instance.
Note: You can only set the number of threads per core on Cloud SQL for SQL Server instances that have six vCPUs or more. Before you beginIn the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Note: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.Make sure that billing is enabled for your Google Cloud project.
Install the gcloud CLI.
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
To initialize the gcloud CLI, run the following command:
gcloud init
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Note: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.Make sure that billing is enabled for your Google Cloud project.
Install the gcloud CLI.
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
To initialize the gcloud CLI, run the following command:
gcloud init
Learn more about roles and permissions.
In the Google Cloud console, go to the Cloud SQL Instances page.
In the Choose a Cloud SQL edition section of the Create a SQL Server instance page, select the Cloud SQL edition for your instance: Enterprise
or Enterprise Plus
.
For more information about Cloud SQL editions, see Introduction to Cloud SQL editions.
You do not need to include the project ID in the instance name. This is done automatically where appropriate (for example, in the log files).
To see the password in clear text, click the Show password icon.
You can either enter the password manually or click Generate to have Cloud SQL create a password for you automatically.
Place your instance in the same region as the resources that access it. The region you select can't be modified in the future. In most cases, you don't need to specify a zone.
Note: If there is a resource location constraint on your organization policy, you must select one of the regions that the organization policy allows. You see a message about Resource Location Restriction in the Choose region and zonal availability section if a constraint exists. Learn more.If you are configuring your instance for high availability, you can select both a primary and secondary zone.
The following conditions apply when the secondary zone is used during instance creation:
Any
for the primary zone and Any (different from primary)
for the secondary zone.The following table is a quick reference to instance settings. For more details about each setting, see the instance settings page.
Setting Notes Machine type Machine type Select from Lightweight, Standard (Most common), or High memory. Each machine type is classified by the number of CPUs (cores) and amount of memory for your instance. Cores The number of vCPUs for your instance. Learn more. Memory The amount of memory for your instance, in GBs. Learn more. Custom For the Dedicated core machine type, instead of selecting a predefined configuration, select the Custom button to create an instance with a custom configuration. When you select this option, you need to select the number of cores and amount of memory for your instance. Learn more. Storage Storage type Determines whether your instance uses SSD or HDD storage. Learn more. Storage capacity The amount of storage provisioned for the instance. Learn more. Enable automatic storage increases Determines whether Cloud SQL automatically provides more storage for your instance when free space runs low. Learn more. Encryption Google-managed encryption The default option. Customer key-managed encryption key (CMEK) Select to use your key with Google Cloud Key Management Service. Learn more. Connections Private IP Adds a private IP address for your instance. To enable connecting to the instance, additional configuration is required.Your instance can have both a public and a private IP address.
Note: Cloud SQL generates a write endpoint automatically for your Cloud SQL Enterprise Plus edition instance if you do the following:Your instance can have both a public and a private IP address.
Learn more about using public IP.
Authorized networksAdd the name for the new network and the Network address. Learn more.
Security Server certificate authority modeChoose the type of certificate authority (CA) that signs the server certificate for this Cloud SQL instance. Learn more.
By default, when you create an instance in Google Cloud console, the instance uses the Google managed internal certificate authority (GOOGLE_MANAGED_INTERNAL_CA
), which is the per-instance CA option.
Note: It might take a few minutes to create your instance. However, you can view information about the instance while it's being created.
For information about installing and getting started with the gcloud CLI, see Installing gcloud CLI. For information about starting Cloud Shell, see the Cloud Shell documentation.
You must use gcloud
version 243.0.0 or later.
gcloud sql instances create
command to create the instance:For Cloud SQL Enterprise Plus edition instances:
gcloud sql instances create INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --region=REGION \ --tier=TIER \ --root-password=ROOT_PASSWORD \ --edition=ENTERPRISE_PLUS
For Cloud SQL Enterprise edition instances:
gcloud sql instances create INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --region=REGION \ --cpu=NUMBER_OF_vCPUs \ --memory=MEMORY_SIZE \ --root-password=ROOT_PASSWORD \ --edition=ENTERPRISEDon't include sensitive or personally identifiable information in your instance name.
You do not need to include the project ID in the instance name. This is done automatically where appropriate (for example, in the log files).
The values for vCPUs and memory size are limited for Cloud SQL Enterprise edition. For more information, see Choose between Cloud SQL Enterprise Plus edition and Cloud SQL Enterprise edition.
For example, the following string creates an instance with two vCPUs and 7,680 MB of memory:
gcloud sql instances create myinstance \ --database-version=SQLSERVER_2017_STANDARD \ --region=us-central1 \ --cpu=2 \ --memory=7680MB \ --root-password=EXAMPLE_PASSWORD \ --edition=ENTERPRISE
For some sample values, see Sample machine types.
To learn about the parameters for instance settings, see gcloud sql instances create.
Note: Cloud SQL generates a write endpoint automatically for your Cloud SQL Enterprise Plus edition instance if you do the following:
The default value for REGION is us-central1
.
Don't include sensitive or personally identifiable information in your instance name; it is externally visible.
You do not need to include the project ID in the instance name. This is done automatically where appropriate (for example, in the log files).
If you are creating an instance for high availability, you can specify both the primary and secondary zones, using the --zone
and --secondary-zone
parameters. The following conditions apply when the secondary zone is used during instance creation or edit:
You can add more parameters to determine other instance settings:
Setting Parameter Notes Required parameters Database version--database-version
The database version, which is based on your Cloud SQL edition. Region --region
See valid values. Note: Some organizations use an organization policy to restrict resource locations. If this type of policy affects your project, you can only select regions the organization policy allows. In the Location drop-down menu in the Console, the locations that are not allowed are unavailable. Learn more. Connectivity Private IP --network
--no-assign-ip
(optional)
--allocated-ip-range-name
(optional)
--enable-google-private-path
(optional)
--network
: Specifies the name of the VPC network you want to use for this instance. Private services access must already be configured for the network. Available only for the beta command (gcloud beta sql instances create
).
--no-assign-ip
: Instance will only have a private IP address.
--allocated-ip-range-name
: If specified, sets a range name for which an IP range is allocated. For example, google-managed-services-default
. The range name should comply with RFC-1035
and be within 1-63 characters. (gcloud alpha sql instances create
).
--authorized-networks
For public IP connections, only connections from authorized networks can connect to your instance. Learn more. Server CA mode --server-ca-mode
The --server-ca-mode
flag configures the type of server certificate authority (CA) for an instance. You can select one of the following options:
GOOGLE_MANAGED_INTERNAL_CA
: this is the default value. With this option, an internal CA dedicated to each Cloud SQL instance signs the server certificate for that instance.GOOGLE_MANAGED_CAS_CA
: with this option, a CA hierarchy consisting of a root CA and subordinate server CAs managed by Cloud SQL and hosted on Google Cloud Certificate Authority Service (CA Service) is used. The subordinate server CAs in a region sign the server certificates and are shared across instances in the region.CUSTOMER_MANAGED_CAS_CA
: with this option, you define the CA hierarchy and manage the rotation of the CA certificates. You create a CA pool in CA Service in the same region of your instance. One of the CAs in the pool is used to sign the server certificate. For more information, see Use a customer-managed CA.--tier
Storage type --storage-type
Determines whether your instance uses SSD or HDD storage. Learn more. Storage capacity --storage-size
The amount of storage provisioned for the instance, in GB. Learn more. Automatic storage increase --storage-auto-increase
Determines whether Cloud SQL automatically provides more storage for your instance when free space runs low. Learn more. Automatic storage increase limit --storage-auto-increase-limit
Determines how large Cloud SQL can automatically grow storage. Available only for the beta command (gcloud beta sql instances create
). Learn more. Automatic backups and high availability High availability --availability-type
For a highly-available instance, set to REGIONAL
. Learn more. Secondary zone --secondary-zone
If you're creating an instance for high availability, you can specify both the primary and secondary zones using the --zone
and --secondary-zone parameters
. The following restrictions apply when the secondary zone is used during instance creation or edit:
If the primary and secondary zones are specified, they must be distinct zones.
If the primary and secondary zones are specified, they must belong to the same region.
--backup-start-time
The window of time when you would like backups to start. Retention settings for automated backups --retained-backups-count
The number of automated backups to retain. Learn more. Retention settings for transaction logs --retained-transaction-log-days
The number of days to retain transaction logs for point-in-time recovery. Learn more. Point-in-time recovery --enable-point-in-time-recovery
Enables point-in-time recovery and transaction logs. Learn more. Note: The following default behavior applies:
--database-flags
You can use database flags to control settings and parameters for your instance. Learn more about database flags. Maintenance schedule Maintenance window --maintenance-window-day
,
--maintenance-window-hour
Determines a one-hour window when Cloud SQL can perform disruptive maintenance on your instance. If you don't set the window, then disruptive maintenance can be done at any time. Learn more. Maintenance timing --maintenance-release-channel
Your preferred timing for instance updates, relative to other instances in the same project. Use preview
for earlier updates, and production
for later updates. Learn more. Custom SAN Add a custom subject alternative name (SAN) --custom-subject-alternative-names=DNS_NAMES
If you want to use a custom DNS name to connect to a Cloud SQL instance instead of using an IP address, then configure the custom subject alternative name (SAN) setting while creating the instance. The custom DNS name that you insert into the custom SAN setting is added to the SAN field of the server certificate of the instance. This lets you use the custom DNS name with hostname validation securely.
Before you can use the custom DNS name in your clients and applications, you must set up the mapping between the DNS name and the IP address. This is known as DNS resolution. You can add a comma-separated list of up to three custom DNS names to the custom SAN setting.
Note: This feature is available forCUSTOMER_MANAGED_CAS_CA
instances only. To create the instance, you must use the gcloud sql instances create
command.
If you are not using the Cloud SQL Auth Proxy, you will use this address as the host address that your applications or tools use to connect to the instance.
gcloud sql users set-password sqlserver no-host --instance=[INSTANCE_NAME] \ --password=[PASSWORD]
To create an instance, use a Terraform resource.
Apply the changesTo apply your Terraform configuration in a Google Cloud project, complete the steps in the following sections.
Prepare Cloud ShellSet the default Google Cloud project where you want to apply your Terraform configurations.
You only need to run this command once per project, and you can run it in any directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Environment variables are overridden if you set explicit values in the Terraform configuration file.
Each Terraform configuration file must have its own directory (also called a root module).
.tf
extension—for example main.tf
. In this tutorial, the file is referred to as main.tf
.
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
If you are following a tutorial, you can copy the sample code in each section or step.
Copy the sample code into the newly created main.tf
.
Optionally, copy the code from GitHub. This is recommended when the Terraform snippet is part of an end-to-end solution.
terraform init
Optionally, to use the latest Google provider version, include the -upgrade
option:
terraform init -upgrade
terraform plan
Make corrections to the configuration as necessary.
yes
at the prompt:
terraform apply
Wait until Terraform displays the "Apply complete!" message.
To delete your changes, do the following:
deletion_protection
argument to false
.
deletion_protection = "false"
yes
at the prompt:
terraform apply
Remove resources previously applied with your Terraform configuration by running the following command and entering yes
at the prompt:
terraform destroy
Not all possible fields are shown in the following basic API call. For a prototype of a JSON request, see Settings.
Also see the Instances:insert page. For information about instance settings, including valid values for regions, see Instance settings. For information about machine types, see Custom instance configurations.
Don't include sensitive or personally identifiable information in instance-id
; the value is externally visible.
You do not need to include the project ID in the instance name. This is done automatically where appropriate (for example, in the log files).
The collation
field (not shown in the following basic API call) lets you set a default value for the type of collation used for the databases in your instance. This collation default is permanent at the instance level but not at the database level. You can change this default with a database administration tool, but only for a specific database that you are creating or updating. You cannot change the collation default for an instance after creating the instance (unless you recreate the instance). For information about collations in SQL Server, see Collation and Unicode support. For a prototype of a JSON request, see Settings. You can specify the following example string for the collation
parameter: SQL_Latin1_General_CP1_CI_AS
.
The timeZone
field (not shown in the following basic API call) lets you to set a time zone for an instance. After you create an instance, you can change the time zone of an instance. For more information and a list of accepted strings, see Settings. You can specify the following example string for the timeZone
field: "Pacific Standard Time"
. See more.
To create an instance that is integrated with Managed Microsoft AD, specify a domain, such as subdomain.mydomain.com
, for the domain
field. For more information, see Creating an instance with Windows Authentication. Additionally, note the procedures and constraints for integrating with a Managed Microsoft AD domain in a different project.
Note: Cloud SQL generates a write endpoint automatically for your Cloud SQL Enterprise Plus edition instance if you do the following:
Before using any of the request data, make the following replacements:
SQLSERVER_2017_STANDARD
.root
user.db-perf-optimized-N-4
.ENTERPRISE
.true
.GOOGLE_MANAGED_INTERNAL_CA
or GOOGLE_MANAGED_CAS_CA
. If you don't specify serverCaMode
, then the default configuration is GOOGLE_MANAGED_INTERNAL_CA
. This feature is in Preview.CUSTOMER_MANAGED_CAS_CA
instances only.HTTP method and URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Request JSON body:
{ "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 }, "ipConfiguration": { "privateNetwork": "PRIVATE_NETWORK", "authorizedNetworks": [AUTHORIZED_NETWORKS], "ipv4Enabled": false, "serverCaMode": "CA_MODE", "customSubjectAlternativeNames": "DNS_NAMES" } } }
To send your request, expand one of these options:
curl (Linux, macOS, or Cloud Shell) Note: The following command assumes that you have logged in to thegcloud
CLI with your user account by running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
curl -X POST \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
{ "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" }
After the instance is created, you can further configure the default user account.
2. Retrieve the IPv4 address of the instanceOptionally, you can retrieve the automatically-assigned IPv4 address. In the response, that address is in the ipAddress
field.
Before using any of the request data, make the following replacements:
HTTP method and URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
To send your request, expand one of these options:
curl (Linux, macOS, or Cloud Shell) Note: The following command assumes that you have logged in to thegcloud
CLI with your user account by running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Execute the following command:
curl -X GET \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Execute the following command:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
{ "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. Create the instance
Not all possible fields are shown in the following basic API call. For a prototype of a JSON request, see Settings.
Also see the Instances:insert page. For information about instance settings, including valid values for regions, see Instance settings. For information about machine types, see Custom instance configurations.
Don't include sensitive or personally identifiable information in instance-id
; the value is externally visible.
You do not need to include the project ID in the instance name. This is done automatically where appropriate (for example, in the log files).
The collation
field (not shown in the following basic API call) lets you to set a default value for the type of collation used for the databases in your instance. This collation default is permanent at the instance level but not at the database level. You can change this default with a database administration tool, but only for a specific database that you are creating or updating. You can't change the collation default for an instance after creating the instance (unless you recreate the instance). For information about collations in SQL Server, see Collation and Unicode support. For a prototype of a JSON request, see Settings. You can specify the following example string for the collation
parameter: SQL_Latin1_General_CP1_CI_AS
.
The timeZone
field (not shown in the following basic API call) lets you to set a time zone for an instance. After you create an instance, you can change the time zone of an instance. For more information and a list of accepted strings, see Settings. You can specify the following example string for the timeZone
field: "Pacific Standard Time"
. See more.
To create an instance that is integrated with Managed Microsoft AD, specify a domain, such as subdomain.mydomain.com
, for the domain
field. For more information, see Creating an instance with Windows Authentication. Additionally, note the procedures and constraints for integrating with a Managed Microsoft AD domain in a different project.
Note: Cloud SQL generates a write endpoint automatically for your Cloud SQL Enterprise Plus edition instance if you do the following:
Before using any of the request data, make the following replacements:
db-perf-optimized-N-4
.root
user.db-custom-[CPUS]-[MEMORY_MBS]
.ENTERPRISE
.true
.GOOGLE_MANAGED_INTERNAL_CA
or GOOGLE_MANAGED_CAS_CA
. If you don't specify serverCaMode
, then the default configuration is GOOGLE_MANAGED_INTERNAL_CA
. This feature is in Preview.CUSTOMER_MANAGED_CAS_CA
instances only.HTTP method and URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
Request JSON body:
{ "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 }, "ipConfiguration": { "privateNetwork": "PRIVATE_NETWORK", "authorizedNetworks": [AUTHORIZED_NETWORKS], "ipv4Enabled": false, "serverCaMode": "CA_MODE", "customSubjectAlternativeNames": "DNS_NAMES" } } }
To send your request, expand one of these options:
curl (Linux, macOS, or Cloud Shell) Note: The following command assumes that you have logged in to thegcloud
CLI with your user account by running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
curl -X POST \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
{ "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" }
After the instance is created, you can further configure the default user account.
2. Retrieve the IPv4 address of the instanceOptionally, you can retrieve the automatically-assigned IPv4 address. In the response, that address is in the ipAddress
field.
Before using any of the request data, make the following replacements:
HTTP method and URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
To send your request, expand one of these options:
curl (Linux, macOS, or Cloud Shell) Note: The following command assumes that you have logged in to thegcloud
CLI with your user account by running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Execute the following command:
curl -X GET \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Execute the following command:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
{ "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" }
To see how the
underlying REST API requestis constructed for this task, see the
APIs Explorer on the instances:insert page.
Generate the write endpointA write endpoint is a global domain name service (DNS) name that resolves to the IP address of the current primary instance automatically. This endpoint redirects incoming connections to the new primary instance automatically in case of a replica failover or switchover operation. You can use the write endpoint in a SQL connection string instead of an IP address. By using a write endpoint, you can avoid having to make application connection changes when a region outage occurs.
For more information about using a write endpoint to connect to an instance, see Connect to an instance using a write endpoint.
Custom instance configurationsCustom instance configurations let you select the amount of memory and CPUs that your instance needs. This flexibility lets you choose the appropriate VM shape for your workload. Machine type availability is determined by your Cloud SQL for SQL Server edition.
For workloads that require real-time processing, make sure that your instance has enough memory to contain the entire working set. However, there are other factors that can impact memory requirements, such as number of active connections, and internal overhead processes. You should perform load testing to avoid performance issues in your production environment.
When you configure your instance, select enough memory and vCPUs to handle your workload, and upgrade as your workload increases. A machine configuration with insufficient vCPUs might lose its SLA coverage. For more information, see Operational guidelines.
Machine types for Cloud SQL Enterprise edition instancesFor Cloud SQL Enterprise edition instances, you can also create custom instance configurations using the gcloud sql instances create
command.
Machine type names use the following format: db-custom-NUMBER_OF_vCPUs-MEMORY
Replace NUMBER_OF_vCPUs with the number of CPUs in the machine and MEMORY with the amount of memory in the machine.
For example, if your machine name is db-custom
, and your machine has 1 CPU and 3840 MB of RAM, then the format for the machine is db-custom-1-3840
.
When selecting the number of CPUs and amount of memory, there are some restrictions on the configuration that you choose:
For Cloud SQL Enterprise Plus edition instances, machine types are predefined as described in the following sections.
Performance-optimized machine familyThis machine family offers balanced price-performance for a wide variety of SQL Server workloads with a memory to compute ratio of 1 vCPU:8 GB RAM. The performance-optimized machine family provides the following machine types to choose from:
Enterprise Plus machine type vCPUs Memory (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 Memory-optimized machine familyThis machine family offers high memory to compute ratios for memory-intensive workloads with one vCPU per 32 GB RAM. Memory-optimized machines are well suited for SQL Server workloads requiring complex queries, analytics and business intelligence reporting that benefit from storing larger datasets in memory during data processing. Memory-optimized machine family provides the following machine types to choose from:
Machine type vCPUs Memory (GB) db-memory-optimized-N-4 4 128 db-memory-optimized-N-8 8 256 db-memory-optimized-N-16 16 512 Tip: If you plan on using private networking, then you can deploy both the private networking setup of your choice and the Cloud SQL instance by using Terraform.For more information, see Cloud SQL Simplified Networking.
Troubleshoot Issue Troubleshooting Error message:Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID]
. Try to create the Cloud SQL instance again. What's next
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-07-08 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-07-08 UTC."],[],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4