- name
- recommend-sku-sizing
- description
- Collect performance data and calculate Azure SQL SKU recommendations only after the source is explicitly confirmed local/on-premises. Never use for a generic SKU request or bare server name; route unresolved requests through run-migration-assessment.
- allowed-tools
- PowerShell Grep View
# Recommend SKU Sizing
These claims were checked on 2026-09-15 against the bundled `skill-contract.yml`, Azure CLI
`datamigration` command contract, and SKU assessment output contract.
## When to Use
Use directly or from `run-migration-assessment` when a local/on-premises server
needs performance-based Azure SQL sizing. Invoke after the server is confirmed
Local. Route Azure identifiers and unresolved servers through
`run-migration-assessment`.
## Workflow
### Step 0: Enforce Source Routing
Proceed only when the current conversation explicitly identifies the source as
Local or on-premises, or already provides local evidence such as an IP address,
connection string, or config file. The words `SQL Server`, `server`, or `SKU
recommendation` alone do not establish that the source is Local.
If the source is not explicit, do not ask for an instance name, output folder,
credentials, collection duration, or target platform. Invoke
`run-migration-assessment` so it can ask whether the source is Azure or Local.
### Step 1: Check the Host and Confirm Inputs
Before collecting local inputs, apply [OS requirements](references/os-requirements.md), then
review [assessment prerequisites](references/assessment-prerequisites.md) before continuing.
Confirm the output folder with selectable Default
(`%LOCALAPPDATA%\Microsoft\SqlAssessment`) and Custom choices. Wait for the
answer and use the selected path.
### Step 2: Check Existing Results
When checking for prior results, run the host-specific lookup from `references/command-execution.md`.
- Existing result -> render it with its generation time and refresh only if
explicitly requested.
- No result -> explain that performance collection is required and ask whether to
continue.
SKU filenames are not instance-specific. Use a per-instance output folder to
associate results with the selected server.
### Step 3: Collect Parameters
Use [local server connection](references/local-server-connection.md) when connection
details are missing. Ask for collection duration with selectable 2-hour and 24-hour
(Recommended) options, plus "I don't want a SKU recommendation". Allow a custom
duration. Stop if the user declines. Convert the duration to seconds.
Before starting collection, use the parameter-alignment rule in `references/command-execution.md`. Do not start
a collection that cannot complete one persistence cycle.
### Step 4: Start Collection
Run the exact detached collection and SKU command from
`references/command-execution.md` when starting collection. Show the collection-started output from
[assessment output](references/assessment-output.md) after the worker starts.
### Step 5: Check and Render Results
When results are requested, run the completion check from `references/command-execution.md`.
- Complete -> read the newest SKU JSON report when available. Extract only the
recommended target's compute and storage configuration and populate those
fields in the Skill Response Template in [assessment output](references/assessment-output.md) when rendering.
Include readiness if readiness results are already available in the
current conversation context. Otherwise omit the Migration Readiness section
and show the SKU data only.
- Running -> show collection status.
- Stopped without time-series data -> report failure and show the log path.
## Check it worked
- **Positive verification:** Require the tracked worker to finish successfully, then confirm a
fresh instance-prefixed counter file and SKU report exist in the recorded run output folder.
- **Cleanup verification:** Confirm the temporary performance config was deleted whether collection
succeeded or failed; retain the selected output folder and reports.
## Notes
- Confirm the output folder before checking files.
- Always ask for collection duration.
- Reuse existing performance data when the user returns.
- Static common counter files alone do not mean collection completed.
## Error Handling
- Collection stops -> check connectivity and restart with the same folder.
- Output permission denied -> confirm write access or select another folder.
- Tool or extension unavailable -> follow
[assessment prerequisites](references/assessment-prerequisites.md) when restoring prerequisites.
## References
- Open `references/command-execution.md` when checking, starting, or completing collection.
- [Local server connection](references/local-server-connection.md)
- [OS requirements](references/os-requirements.md)
- [Assessment prerequisites](references/assessment-prerequisites.md)
- [Assessment output](references/assessment-output.md)
GitHubで見る