Create SQL Server VM instances (original) (raw)
Microsoft SQL Server is a database system that runs on Windows Server and some Linux distributions. You can use SQL Server on Compute Engine as part of the backend for your applications, as a flexible development and test environment, or in addition to your on-premises systems for backup and disaster recovery.
Compute Engine provides images with Microsoft SQL Server preinstalled on Windows Server. For these SQL Server images, Compute Engine manages the license for both Windows Server and SQL Server, and includes the cost in your monthly bill. Create virtual machine (VM) instances with SQL Server and scale out to large multi-node configurations when you need them.
Compute Engine stores your data on durableblock storage disks with automatic redundancy and automatic encryption at rest. Use these disks to store your SQL Server data and you don't need to worry about the durability or security of your data. For additional performance, create your VM instances with aLocal SSD as a cache that provides additional IOPS and performance for SQL Server queries.
You can create Compute Engine VM instances that run SQL Server in the following ways:
- Create a VM instance using a SQL Server image. These images include one of several SQL Server editions that run on Windows Server. You can use these images to run SQL Server on Compute Engine and you don't need to obtain your own separate license from Microsoft.
- Migrate your existing SQL Server licensesto a Windows Server VM instance on Compute Engine and manage those licenses yourself.
- Install SQL Server on a Compute Engine Linux VM.
For a full list of the available images that include SQL Server preinstalled, see Operating system details.
Machine type requirements for SQL Server images
The best machine type for SQL Server depends on the edition of SQL Server that you run.
SQL Server Standard
You can run SQL Server Standard on VM instances created with any machine type, but shared-core machine typesdon't provide optimal performance. Google recommends that you use VM instances with at least one vCPU to run SQL Server Standard.
SQL Server Enterprise
VM instances that run SQL Server Enterprise must have at least 4 vCPUs. For optimal performance, Google recommends that you run SQL Server Enterprise on VM instances with larger memory capacities. Depending on your workload, you should use highmem predefined machine types with 8 vCPUs or more, such as forN2. The highmempredefined machine types maximize the ratio of memory to each vCPU that is available on Compute Engine, which is optimal for SQL Server Enterprise VMs.
You can use SQL Server Enterprise on Compute Engine tocreate SQL Server Availability Groups.
Default components
SQL Server images include several components by default. The default components depend on the edition of SQL Server that you selected.
For information about the default components included with your version of SQL Server, seeEditions and supported features of SQL Server 2019.
For information about modifying the SQL Server components, seeAdd Features to an Instance of SQL Server.
Before you begin
- If you haven't already, set up authentication. Authentication verifies your identity for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine by selecting one of the following options:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
- Install the Google Cloud CLI. After installation,initialize the Google Cloud CLI by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity. - Set a default region and zone.
Terraform
To use the Terraform samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.
- Install the Google Cloud CLI.
- If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
For more information, see Set up authentication for a local development environment.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
Install the Google Cloud CLI.
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, seeAuthenticate for using REST in the Google Cloud authentication documentation.
Create a SQL Server instance
To create a SQL Server instance, specify the image family for the specific version of SQL Server that you need. For a list of the SQL Server image families, see Operating system details.
For optimal performance, database server platforms require machine types with more virtual CPUs and larger amounts of memory. Google recommends that you use machine types with at least 2 vCPUs and at least 4 GB of memory when you run SQL Server instances. You can usecustom machine typesto configure SQL Server instances to match the performance requirements for your workload. You can use larger disks or faster disk types to improve the performance of your applications.
You must set specific firewall rules to allow SQL Server traffic on the VPC network or subnet that your VM instance is a part of. For more information seeBest practices for SQL Server.
Console
To create a SQL Server instance, follow these steps:
- In the Google Cloud console, go to the Create an instance page.
Go to Create an instance - Specify the VM instance details.
- Click the OS and storage vertical tab.
- Click Change, and then do the following:
- On the Public images tab, click the Operating system list, and then select SQL Server on Windows Server.
- In the Version list, select a version.
- In the Boot disk type list, select a boot disk type.
- In the Size (GB) field, set the boot disk size.
- Optional: To modify the advanced configuration for the boot disk, click Show advanced configuration, and then specify your settings.
- To save the boot disk configuration, click Select.
- In the Create an instance window, click Create.
After you create the VM instance, create a firewall rule to allow access to SQL Server on your instance. The default SQL Server port is 1433.
- In the Google Cloud console, go to the Firewall Rules page.
Go to Firewall Rules - At the top of the page, click Create firewall rule.
- Specify the details for this firewall rule.
- In the Name field, specify a name for the firewall rule.
- In the Network field, select the VPC network where your SQL Server instance is located.
- For the Direction of traffic, select Ingress.
- In the Targets field, choose the targets for the firewall rule, which can be all instances, or specified target tags or service accounts. For example, you can select the optionAll instances in the network. If you configured a tag or service account for your SQL Server instance, then you can limit the firewall rule to the specific tag or service account.
- In Source filter field, select the range of IPs that you want to allow access on this port. For an ingress rule, you can select Source IPv4 ranges, source IPv6 ranges, source tags, or service accounts. Use the fields after Source filter to supply additional information about your choice.
- In the Protocols and ports section, chooseSpecified protocols and ports and enter the port that SQL Server uses. For this example, choose TCP and enter
1433, which is the default port.
- Click Create to create this firewall rule and allow access to your SQL Server instance over the specified port.
If you need to add additional firewall rules to your VM instance, see thefirewall rules documentation.
gcloud
Use the compute images listcommand to see a list of available SQL Server images:
gcloud compute images list --project windows-sql-cloud --no-standard-images
Use thecompute instances createcommand to create a new VM and specify the image family for one of the Windows Server or SQL Serverpublic images.
gcloud compute instances create VM_NAME
--image-project windows-sql-cloud
--image-family IMAGE_FAMILY
--machine-type MACHINE_TYPE
--boot-disk-size BOOT_DISK_SIZE
--boot-disk-type BOOT_DISK_TYPE
Replace the following:
- VM_NAME: thename for the new instance.
- IMAGE_FAMILY: one of thepublic image families for Windows Server or SQL Server images.
- MACHINE_TYPE: one of the availablemachine types.
- BOOT_DISK_SIZE: the size of the boot disk in GB. Larger persistent disks havehigher throughput.
- BOOT_DISK_TYPE: the type of the boot disk for your instance. For example,
pd-balanced.
After you create the VM, create a firewall rule to allow access to SQL Server on your VM. The default SQL Server port is 1433.
gcloud compute firewall-rules create sql-server-1433
--description "Allow SQL Server access from all sources on port 1433."
--allow tcp:1433 --network NETWORK
where NETWORK is the name of the VPC network where your VM is located.
If you need to add additional firewall rules to your VM, see thefirewall rules documentation.
Terraform
To create the SQL Server VM instances, use thegoogle_compute_instance resource.
To learn how to apply or remove a Terraform configuration, seeBasic Terraform commands.
REST
To create a VM with the API, include theinitializeParams propertyin your VM creation request and specify a Windows image.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
instance = { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [{ "boot": "true", "type": "PERSISTENT", "initializeParams": { "diskName": "DISK_NAME", "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY", "diskSizeGb": "BOOT_DISK_SIZE", "diskType": "BOOT_DISK_TYPE", } }], "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT" }], "network": "global/networks/default" }], "serviceAccounts": [{ "email": DEFAULT_SERVICE_EMAIL, "scopes": DEFAULT_SCOPES }] }
Replace the following:
- PROJECT_ID: the ID for your project.
- ZONE: thezone for this instance.
- VM_NAME: thename for the new VM.
- MACHINE_TYPE: the availablemachine types.
- IMAGE_PROJECT: either
windows-cloudfor Windows Server images orwindows-sql-cloudfor Windows Server images with SQL Server preinstalled. - IMAGE_FAMILY: thepublic image familiesfor Windows Server or SQL Server images.
- BOOT_DISK_SIZE: the size of the boot disk in GB. Larger persistent disks havehigher throughput.
- BOOT_DISK_TYPE: the typeof the boot disk for your VM. For example,
pd-ssd.
After you create the VM, use thefirewalls.insert methodto create a firewall rule that allows access to SQL Server on your VM. The default SQL Server port is 1433.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{ "name": "sql-server-1433", "network": "global/networks/NETWORK", "allowed": [ { "IPProtocol": "tcp", "ports": [ "1433" ] } ] }
Replace the following:
- PROJECT_ID: the ID for your project.
- NETWORK: the name of the VPC network where your VM is located.
After you create your SQL Server instance,set the initial password for the VMso that you canconnect to the VMusing RDP. Run the SQL Server Management Studio as an administrator tomanage databases on your SQL Server instance.
You can enhance the SQL Server installation with one or more of the following items:
- Install SQL Server Data Tools (SSDT) on your SQL Server instance so that you can create and manage your SQL Server databases using Visual Studio.Connect to Windows VMs using RDPanddownload and install SSDTfrom the Microsoft website.
- SQL Server images include severaldefault components. You canadd features to your SQL Server installation. SQL Server images always include the setup executable at
C:\sql_server_install\setup.exe. - To install SQL Server to a secondary disk,add a non-boot disk to your VM. Then, connect to the VM instance and run the
C:\sql_server_install\setup.exeinstaller and select a new installation path on your secondary disk. - If you require additional storage space on your boot disk or on any secondary storage disks, you canmodify a Hyperdiskor change the size of a Persistent Disk, even while your VM instance is running.
Manage SQL Server databases
Run the SQL Server Management Studio as an administrator to configure SQL Server databases. You candownload and installthe SQL Server Management Studio on your local workstation, and use it toconnect to the database engineon your VM instance.
If you can't install the Management Studio on your local workstation, thenconnect to Windows VMs using RDPand run the Management Studio on the VM instance itself. SQL Server 2012 and SQL Server 2014 both include the SQL Server Management Studio by default. For SQL Server 2016, you must download the SQL Server Management Studio from the Microsoft website and install it on the VM instance.
By default, SQL Server uses Windows Authentication mode to control access to SQL Server itself. To use SQL Server Authentication mode, you canchange the authentication mode.
Update SQL Server instance names
If you rename a VM that hosts SQL Server, then you must update the SQL Server instance name. For more information, see Rename a computer that hosts a stand-alone instance of SQL Server.
What's next
- Verify that an instance has successfully started.
- Create a new Hyperdisk volume orcreate a new Persistent Disk volumeand attach it to your VM instance to store your data separately from the boot disk.
- Learn best practices for SQL Server on Google Cloud.
- Create and configure a high-performance SQL Server instance.
- Use HammerDB to runLoad testing on SQL Server.
- Use SQL Server with .NET applications.