Skip to content

Commit 30708ab

Browse files
Merge pull request #10029 from MicrosoftDocs/main
Auto Publish – main to live - 2025-10-23 18:00 UTC
2 parents 9fb629b + d5bc7b9 commit 30708ab

6 files changed

Lines changed: 205 additions & 18 deletions

File tree

support/azure/virtual-desktop/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,7 @@ items:
3535
href: ./troubleshoot-session-host-configuration-update.md
3636
- name: Troubleshoot session host virtual machine configuration
3737
href: ./troubleshoot-vm-configuration.md
38+
- name: Troubleshoot ephemeral OS disks
39+
href: ./troubleshoot-ephemeral-os-disks.md
3840
- name: Win key remains held after pressing Ctrl+Win+L in a remote session
3941
href: win-key-remains-held-after-pressing-ctrl-win-l-in-remote-session.md
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
title: Troubleshoot ephemeral OS disks in Azure Virtual Machines (VMs) and Azure Virtual Desktop (AVD)
3+
description: Resolve deployment failures, data loss, and feature limitations with ephemeral OS disks for Azure Virtual Machines (VMs) and Azure Virtual Desktop (AVD). Get troubleshooting steps and best practices.
4+
ms.topic: troubleshooting
5+
ms.date: 10/23/2025
6+
ms.reviewer: kaushika
7+
audience: itpro
8+
ms.custom:
9+
- sap:Azure Virtual Desktop\Remote Desktop Clients\Redirecting resources via the client
10+
- pcy:wincomm-user-experience
11+
12+
---
13+
# Troubleshoot ephemeral OS disks in Azure Virtual Machines (VMs) and Azure Virtual Desktop (AVD)
14+
15+
## Summary
16+
17+
Ephemeral OS disks (EOSD) are designed for Azure Virtual Machines (VMs) and Azure Virtual Desktop (AVD) session hosts, offering faster provisioning and reduced storage costs. However, users might encounter deployment failures, unexpected data loss, or functional limitations when the stateless design of EOSD and its dependencies on VM size and local storage aren't fully understood. This article helps identify and resolve these issues.
18+
19+
## Symptoms
20+
21+
- Deployment failures occur because of insufficient local storage for the OS image on specific VM sizes.
22+
- Loss of OS-level changes after stopping, deallocating, or reimaging a VM.
23+
- Confusion arises from unsupported EOSD features like snapshots, backups, and encryption.
24+
- Operational delays and increased support cases for AVD and stateless workloads.
25+
26+
## Troubleshooting Guidance
27+
28+
### VM size incompatibility
29+
30+
**Cause**: Some VM sizes don't have enough local cache or temporary disk space to accommodate the OS image, causing deployment failures.
31+
32+
**Solution**:
33+
34+
- Check that the VM size supports EOSD by verifying the local cache or temporary disk size.
35+
- Use the Azure CLI command `EphemeralOSDiskSupported` to confirm compatibility.
36+
- For AVD, ensure the Temp Disk placement is selected during VM creation, as NVMe is not supported in public preview.
37+
38+
### Misunderstanding EOSD persistence
39+
40+
**Cause**: Ephemeral OS disks are designed as stateless disks, which means they don't support persistent features like snapshots, backups, or encryption.
41+
42+
**Solution**: Use managed OS disks for persistent features. If you need features such as backups, snapshots, or encryption, switch to managed OS disks instead of EOSD for your Azure VMs or AVD session hosts.
43+
44+
### Lifecycle mismanagement
45+
46+
**Cause**: Stop and deallocate operations wipe the OS state on EOSD, causing data loss.
47+
48+
**Solution**: Avoid stop and deallocate operations.
49+
50+
- Don't stop or deallocate VMs using EOSD, as this leads to data loss. Instead, design stateless workloads.
51+
- Persist user profiles externally using FSLogix profile containers or Azure Files.
52+
53+
### Incorrect DiffDiskPlacement configuration
54+
55+
**Cause**: Selecting an unsupported placement option, such as NVMe, can cause deployment issues.
56+
57+
**Solution**: Correct DiffDiskPlacement configuration
58+
59+
- For AVD session hosts, ensure the Temp Disk placement is selected during deployment.
60+
- Avoid selecting NVMe placement during public preview to prevent deployment issues.
61+
62+
### Regional SKU rollout gaps
63+
64+
**Cause**: Incomplete rollout of supported SKUs or backend bugs cause regional deployment issues.
65+
66+
**Solution**: Address regional SKU rollout gaps
67+
68+
- Monitor Azure announcements for updates on SKU availability.
69+
- Deploy to another region or select a different SKU if rollout gaps affect your deployment.
70+
71+
### Best practices
72+
- **Validate VM size and placement:** Before deployment, ensure your VM’s local cache or temporary disk can accommodate the OS image size.
73+
- **Design stateless workloads:** Persist user profiles and application data externally using FSLogix profile containers or Azure Files.
74+
- **Avoid stop/deallocate operations:** Use restart or delete/recreate logic for autoscale scenarios to prevent data loss.
75+
- **Communicate limitations upfront:** Inform teams that EOSD doesn't support snapshots, backups, or Azure Disk Encryption.
76+
- **Monitor regional availability:** Check supported SKUs and regions using Azure documentation before deployment.
77+
- **Set up automated configuration:** Use VM extensions or scripts to reapply settings and applications after reimaging.
78+
- **For AVD environments:**
79+
1. Use Temp Disk for ephemeral OS disk placement (NVMe isn't supported in public preview).
80+
1. Persist user profiles with FSLogix profile containers.
81+
1. Store application packages on Azure Files or Azure NetApp Files.
82+
1. Set up autoscale rules to delete and recreate hosts instead of deallocating them.
83+
84+
### More information
85+
86+
For further details, refer to the following resources:
87+
- [Ephemeral OS disks for AVD session hosts](/azure/virtual-desktop/deploy/session-hosts/ephemeral-os-disks)
88+
- [Ephemeral OS disks - Frequently Asked Questions](/azure/virtual-machines/ephemeral-os-disks-faq)

support/azure/virtual-machines/linux/linux-hyperv-issue.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,15 @@ Or
6767
1. Identify the file that disables the hv_netvsc driver and the corresponding line numbers by running the following command:
6868

6969
```bash
70-
grep -nr "hv_netvsc" /etc/modprobe.d/
70+
sudo grep -nr "hv_netvsc" /etc/modprobe.d/
7171
```
7272

7373
2. Modify the corresponding file and comment out or delete the hv_netvsc entries:
7474

7575
:::image type="content" source="media/linux-hyperv-issue/hv-netvsc-disabled.png" alt-text="Screenshot that shows the possible configuration file contents used to disable network drivers.":::
7676

7777
```bash
78-
vi /etc/modprobe.d/disable.conf
78+
sudo vi /etc/modprobe.d/disable.conf
7979
```
8080

8181
> [!NOTE]
@@ -88,13 +88,13 @@ Or
8888
- For RHEL/SLES-based images
8989

9090
```bash
91-
# dracut -f -v
91+
sudo dracut -f -v
9292
```
9393

9494
- For Ubuntu/Debian-based images
9595

9696
```bash
97-
# mkinitramfs -k -o /boot/initrd.img-$(uname -r)
97+
sudo mkinitramfs -k -o /boot/initrd.img-$(uname -r)
9898
```
9999

100100
6. Reboot the VM.
@@ -104,19 +104,19 @@ Always take a backup of the original initial RAMdisk image to facilitate the rol
104104
- For RHEL-based images:
105105

106106
```bash
107-
# cp /boot/initramfs-<kernelVersion>.img /boot/initramfs-<kernelVersion>.img.bak
107+
sudo cp /boot/initramfs-<kernelVersion>.img /boot/initramfs-<kernelVersion>.img.bak
108108
```
109109

110110
- For SLES-based images:
111111

112112
```bash
113-
# cp /boot/initrd-<kernelVersion> /boot/initrd-<kernelVersion>.bak
113+
sudo cp /boot/initrd-<kernelVersion> /boot/initrd-<kernelVersion>.bak
114114
```
115115

116116
- For Ubuntu/Debian-based images:
117117

118118
```bash
119-
# cp /boot/initrd.img-<kernelVersion> /boot/initrd.img-<kernelVersion>.bak
119+
sudo cp /boot/initrd.img-<kernelVersion> /boot/initrd.img-<kernelVersion>.bak
120120
```
121121

122122
### <a id="reenable-hv_netvsc-offline"></a>Solution 2: Enable Hyper-V network driver offline
@@ -154,7 +154,7 @@ If the issue continues even though the Hyper-V network driver is enabled, use on
154154
7. Generally, a NIC MAC address would only change if a NIC is deleted or added by the administrator or a NIC is updated in the backend. If network configuration via cloud-init isn't desired, and the `apply_network_config` parameter needs to be set to false, delete the */var/lib/cloud/instance/obj.pkl* file and reboot the system.
155155

156156
```bash
157-
# rm /var/lib/cloud/instance/obj.pkl
157+
sudo rm /var/lib/cloud/instance/obj.pkl
158158
```
159159

160160
8. Once the changes are applied, restart the system.
@@ -213,7 +213,7 @@ If the VM is inaccessible due to other Hyper-V drivers being disabled, use an of
213213
1. Run the following command to identify the file that disables the hv_utils, hv_vmbus, hv_storvsc, or hv_netvsc driver and the corresponding line number.
214214
215215
```bash
216-
egrep -nr "hv_utils|hv_vmbus|hv_storvsc|hv_netvsc" /etc/modprobe.d/
216+
sudo egrep -nr "hv_utils|hv_vmbus|hv_storvsc|hv_netvsc" /etc/modprobe.d/
217217
```
218218
219219
2. Modify the corresponding file and comment out or delete the hv_utils, hv_vmbus, hv_storvsc, or hv_netvsc entries. The entries will most commonly be any of the following (or both):
@@ -223,7 +223,7 @@ If the VM is inaccessible due to other Hyper-V drivers being disabled, use an of
223223
:::image type="content" source="media/linux-hyperv-issue/hv-disabled-example-2.png" alt-text="Screenshot that shows the possible configuration file contents used to disable kernel modules/drivers.":::
224224
225225
```bash
226-
vi /etc/modprobe.d/disable.conf
226+
sudo vi /etc/modprobe.d/disable.conf
227227
```
228228
229229
> [!IMPORTANT]
@@ -236,13 +236,13 @@ If the VM is inaccessible due to other Hyper-V drivers being disabled, use an of
236236
- For RHEL/SLES-based images
237237
238238
```bash
239-
# dracut -f -v
239+
sudo dracut -f -v
240240
```
241241
242242
- For Ubuntu/Debian-based images
243243
244244
```bash
245-
# mkinitramfs -k -o /boot/initrd.img-$(uname -r)
245+
sudo mkinitramfs -k -o /boot/initrd.img-$(uname -r)
246246
```
247247
248248
5. Once the changes are applied, use the `az vm repair restore` command to perform an automatic OS disk swap with the original VM and reboot the system.

support/sql/tools/replay-markup-language-utility.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
22
title: Replay Markup Language Utilities
33
description: This article discusses a group of tools that are used by support professionals to troubleshoot SQL Server.
4-
ms.date: 09/09/2025
4+
ms.date: 10/21/2025
55
ms.custom: sap:SQL Server Management, Query and Data Tools
6-
ms.reviewer: sureshka, jopilov, toddhayn, troymoen, v-jayaramanp
6+
ms.reviewer: sureshka, jopilov, toddhayn, troymoen, v-jayaramanp, v-shaywood
77
---
88
# Replay Markup Language (RML) Utilities for SQL Server
99

@@ -23,6 +23,9 @@ The RML Utilities are a set of diagnostic tools for troubleshooting and aiding p
2323

2424
For a complete description of every tool and sample usage, see the RML Help file that's included in RML Utilities for SQL Server.
2525

26+
> [!NOTE]
27+
> RML Utilities have been deprecated as of October 2025. This product is no longer in development and no future enhancements or fixes should be expected.
28+
2629
## How are RML Utilities useful?
2730

2831
You can use RML Utilities for SQL Server to do the following tasks:
@@ -50,7 +53,7 @@ You can examine the version history of RML Utilities in this table and download
5053

5154
|Version number|Description|
5255
|---|---|
53-
|[09.04.0103](https://www.microsoft.com/download/details.aspx?id=106287)| Indicates the current web release that's available from the Microsoft Download Center. It supports all released versions of SQL Server (SQL Server 2022, SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, and SQL Server 2008).|
56+
|[09.04.0103](https://www.microsoft.com/download/details.aspx?id=106287)| The current and final web release that's available from the Microsoft Download Center. It supports all released versions of SQL Server (SQL Server 2022, SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, and SQL Server 2008).|
5457
|[09.04.0102](https://www.microsoft.com/download/details.aspx?id=104868)| Indicates the previous web release that's available from the Microsoft Download Center. It supports all released versions of SQL Server (SQL Server 2022, SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, and SQL Server 2008).|
5558
|[9.04.0100](https://www.microsoft.com/download/details.aspx?id=103126)| Indicates a previous web release that's available from the Microsoft Download Center. It supports all released versions of SQL Server (SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005, and SQL Server 2000).|
5659
|[9.04.0098](https://www.microsoft.com/download/details.aspx?id=54090)| Indicates a previous web release package that is included with the Database Experimentation Assistant tool. It supports all released versions of SQL Server.|
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
title: How to Remove Windows 365 Business Cloud PCs from Grace Using Graph Explorer and Microsoft Graph API
3+
description: Learn how to remove Windows 365 Business Cloud PCs from grace period using Microsoft Graph Explorer and API. Step-by-step guide with prerequisites and troubleshooting tips.
4+
manager: dcscontentpm
5+
ms.reviewer: kaushika, anwill
6+
ms.date: 10/22/2025
7+
ms.topic: troubleshooting
8+
ms.custom:
9+
- pcy:Provisioning\Grace Period Issues
10+
- sap:WinComm User Experience
11+
---
12+
# How to remove Windows 365 Business Cloud PCs from grace period using Graph Explorer and Microsoft Graph API
13+
14+
## Summary
15+
16+
When you remove a license from a user, Windows 365 Business Cloud PCs enter a grace period before permanent removal. In some cases, you might want to remove these Cloud PCs from grace manually, such as to reassign the license to another user.
17+
18+
This article provides step-by-step instructions for using Microsoft Graph Explorer and the Microsoft Graph API to perform this deprovision.
19+
20+
## Prerequisites
21+
22+
- Administrator access to your Microsoft 365 tenant
23+
24+
- Permissions to use Microsoft Graph API (Cloud PC administrator or equivalent)
25+
26+
- Access to Microsoft Graph Explorer
27+
28+
- Cloud PCs in `inGracePeriod` status in your Windows 365 environment
29+
30+
## Step 1: Sign in to Graph Explorer
31+
32+
1. Go to [Graph Explorer \| Try Microsoft Graph APIs - Microsoft Graph](https://developer.microsoft.com/en-us/graph/graph-explorer)
33+
34+
1. Select **Sign in to Graph Explorer** (top right corner).
35+
36+
1. Authenticate by using your administrator credentials and set the tenant.
37+
38+
## Step 2: Identify Cloud PCs in grace period
39+
40+
1. In the query box, set the following **GET** request:
41+
42+
> https://graph.microsoft.com/beta/deviceManagement/virtualEndpoint/cloudPCs?\$filter=status eq 'inGracePeriod'
43+
44+
1. In Graph Explorer, select **Modify Permissions**.
45+
46+
1. Consent to the following permissions for your session:
47+
48+
- CloudPC.Read.All
49+
50+
- CloudPC.ReadWrite.All
51+
52+
1. If not already granted, select **Consent** to add these permissions.
53+
54+
1. Select **Run Query**.
55+
56+
1. Review the results to locate the Cloud PCs you want to remove. Note the **id** value for each relevant Cloud PC.
57+
58+
## Step 3: Remove a Cloud PC from grace
59+
60+
1. For each Cloud PC, send a **POST** request to remove it from grace. In the query box, select **POST** and use the following request:
61+
62+
> https://graph.microsoft.com/beta/deviceManagement/virtualEndpoint/cloudPCs/{cloudPCId}/endGracePeriod
63+
64+
1. Replace `{cloudPCId}` with the actual ID of the Cloud PC. For example:
65+
66+
> https://graph.microsoft.com/beta/deviceManagement/virtualEndpoint/cloudPCs/4b18de4b-ab05-4059-8c61-0323a7df4ced/endGracePeriod
67+
68+
1. Leave the request body empty.
69+
70+
1. Select **Run Query**.
71+
72+
1. If successful, you receive a **No Content - 204** response.
73+
74+
## Step 4: Verify removal
75+
76+
1. To confirm removal from grace, repeat the **GET** request from Step 3.
77+
78+
1. The Cloud PC shouldn't appear with status eq 'inGracePeriod'.
79+
80+
## Troubleshooting and notes
81+
82+
- If you receive a permissions error, verify that you have the correct roles and all necessary permissions are consented.
83+
84+
- Changes made through the Graph API might take a few minutes to reflect in the Windows 365 portal.
85+
86+
- Removing a Cloud PC from grace permanently deletes the Cloud PC and any associated user data.
87+
88+
## Additional resources
89+
90+
- Microsoft Graph Cloud PC Documentation
91+
92+
- [List cloudPCs - Microsoft Graph beta](/graph/api/virtualendpoint-list-cloudpcs?view=graph-rest-beta&tabs=http)
93+
94+
- [cloudPC: endGracePeriod - Microsoft Graph beta](/graph/api/cloudpc-endgraceperiod?view=graph-rest-beta&tabs=http)

support/windows-365/toc.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ items:
1111
items:
1212
- name: Known issues with Windows 365 Business
1313
href: known-issues.md
14-
- name: Resize
14+
- name: Provisioning
1515
items:
16-
- name: Resize a Windows 365 Business Cloud PC
17-
href: resize-windows-365-business-cloud-pc.md
16+
- name: Remove Windows 365 Business Cloud PCs from Grace Using Graph
17+
href: how-to-deprovision-business-grace-with-graph-explorer.md
1818
- name: Windows 365 Enterprise
1919
items:
2020
- name: Azure Network Connection

0 commit comments

Comments
 (0)