[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69AFWQBBRS37HE6F82CYA3P":3,"skill-same:01M69AFWQBBRS37HE6F82CYA3P":78},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":35,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M69AFWQBBRS37HE6F82CYA3P","evaluate-azure-migration-assessment",null,"Run or refresh migration assessment for an Azure SQL Server instance and retrieve readiness and SKU results.","microsoft\u002Fsqlcon-eu-2026-demos","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69AFC8P5962CJBG1RDAKA7Q",3,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Fevaluate-azure-migration-assessment\u002FSKILL.md",[],[19,20,21,22],"evaluate azure migration assessment","azure sql","sql","sql server","2026-11-10 10:12:30",false,"---\nname: evaluate-azure-migration-assessment\ndescription: \"Run or refresh migration assessment for an Azure SQL Server instance and retrieve readiness and SKU results.\"\nallowed-tools: Bash(az:*, curl:*) PowerShell Grep View\n---\n\n# Evaluate Azure Migration Assessment\n\n## When to Use\n\nUse directly or from `run-migration-assessment` for Azure SQL Server\ninstances.\n\n## Workflow\n\n### Step 1: Resolve the Resource\n\nCollect subscription, resource group, and instance name using\n[ARM resource identification](..\u002Freferences\u002Farm-resource-identification.md) if not in context.\nInitialize the API versions and instance endpoint from\n`references\u002Fcommand-execution.md`.\n\n### Step 2: Check Existing Assessment\n\nAlways check for an existing assessment first for a general request such as\n\"run migration assessment\".\n\nSkip this check only when the user explicitly asks to **refresh**, **rerun**,\n**replace**, or generate a **new\u002Ffresh** assessment, or explicitly says to\nignore existing results.\n\nInvoke `get-migration-assessment` with the resolved identifiers.\n\n- Existing data -> render it before asking anything else. Trigger a fresh\n  assessment only after the user explicitly confirms.\n- Enabled with no data -> continue to Step 3.\n- Explicitly disabled -> offer ARM enablement, portal enablement, or Local assessment if the host tool allows.\n\n### Step 3: Trigger and Monitor Assessment\n\nRecord the trigger request time and run the assessment trigger from\n`references\u002Fcommand-execution.md`. Continue in the same command by polling\n`MigrationJobOnDemand` using the configurable attempt count and interval from\nthat reference.\n\n- 2xx or 409 -> continue.\n- Other 4xx\u002F5xx -> report the error and stop.\n- `InProgress` -> continue polling in the same turn without asking the user.\n- `Succeeded` with `lastExecutionTime` later than the trigger request time ->\n  continue to Step 4.\n- `Succeeded` with an older `lastExecutionTime` -> continue polling.\n- `Failed` -> show `jobException` and stop.\n- Still running after the polling window -> show the portal link and stop; the\n  user can return later to refresh.\n\n### Step 4: Retrieve Telemetry\n\nRun `getTelemetry`, capture its `Azure-AsyncOperation` URL, and poll it using\n`references\u002Fcommand-execution.md`. Save the full response to a temporary file.\n\n- `Succeeded` -> decode the response.\n- `Failed` or `Canceled` -> report the error.\n- Timeout -> show the portal link and stop.\n\n### Step 5: Confirm Fresh Results\n\nDecode the portal's four telemetry report families:\n\n- `Suitability` \u002F `Suitability_V2`.\n- `SKURecommendation_AzureSQLVM` \u002F `_V2`.\n- `SKURecommendation_AzureSQLMI` \u002F `_V2`.\n- `SKURecommendation_AzureSQLDB` \u002F `_V2`.\n\nFor each family, select the report with the newer telemetry\n`ObservedTimestampUTC`. Use Suitability for readiness and blockers, and the\nthree SKU reports for sizing and recommendation details.\n\nCompare the selected Suitability `EndedOn` with the trigger request time after\nconverting both to UTC. Also require each available\nselected SKU report's `ObservedTimestampUTC` to be later than the trigger\nrequest time. If any selected report is stale, repeat telemetry retrieval and\ndecoding up to three times for report propagation. Use the job only for running,\nfresh success, and failure state.\n\nUse the selected fresh telemetry reports as the source for readiness, blockers,\ntarget SKU, requirements, recommendation details, and available monetary cost\nfields.\n\n### Step 6: Render\n\nUse the recommended target and available cost from the fresh telemetry selected\nin Step 5.\n\nUse [assessment output](..\u002Freferences\u002Fassessment-output.md) to render the combined\nreadiness and SKU recommendation. Include the portal report link.\n\n## Notes\n\n- Follow the transport rules in `references\u002Fcommand-execution.md`.\n- Run its PowerShell sections in order and execute each fenced block as one\n  terminal command.\n- The telemetry operation URL comes from `getTelemetry`.\n- Treat a successful telemetry LRO as report-read completion. Use\n  `MigrationJobOnDemand` for assessment-job completion.\n- Use `EndedOn` as the generated time.\n- Use only the recommended target and user databases in output.\n\n## References\n\n- `references\u002Fcommand-execution.md`\n- [ARM resource identification](..\u002Freferences\u002Farm-resource-identification.md)\n- [Assessment output](..\u002Freferences\u002Fassessment-output.md)\n","# Evaluate Azure Migration Assessment\n\n## When to Use\n\nUse directly or from `run-migration-assessment` for Azure SQL Server\ninstances.\n\n## Workflow\n\n### Step 1: Resolve the Resource\n\nCollect subscription, resource group, and instance name using\n[ARM resource identification](..\u002Freferences\u002Farm-resource-identification.md) if not in context.\nInitialize the API versions and instance endpoint from\n`references\u002Fcommand-execution.md`.\n\n### Step 2: Check Existing Assessment\n\nAlways check for an existing assessment first for a general request such as\n\"run migration assessment\".\n\nSkip this check only when the user explicitly asks to **refresh**, **rerun**,\n**replace**, or generate a **new\u002Ffresh** assessment, or explicitly says to\nignore existing results.\n\nInvoke `get-migration-assessment` with the resolved identifiers.\n\n- Existing data -> render it before asking anything else. Trigger a fresh\n  assessment only after the user explicitly confirms.\n- Enabled with no data -> continue to Step 3.\n- Explicitly disabled -> offer ARM enablement, portal enablement, or Local assessment if the host tool allows.\n\n### Step 3: Trigger and Monitor Assessment\n\nRecord the trigger request time and run the assessment trigger from\n`references\u002Fcommand-execution.md`. Continue in the same command by polling\n`MigrationJobOnDemand` using the configurable attempt count and interval from\nthat reference.\n\n- 2xx or 409 -> continue.\n- Other 4xx\u002F5xx -> report the error and stop.\n- `InProgress` -> continue polling in the same turn without asking the user.\n- `Succeeded` with `lastExecutionTime` later than the trigger request time ->\n  continue to Step 4.\n- `Succeeded` with an older `lastExecutionTime` -> continue polling.\n- `Failed` -> show `jobException` and stop.\n- Still running after the polling window -> show the portal link and stop; the\n  user can return later to refresh.\n\n### Step 4: Retrieve Telemetry\n\nRun `getTelemetry`, capture its `Azure-AsyncOperation` URL, and poll it using\n`references\u002Fcommand-execution.md`. Save the full response to a temporary file.\n\n- `Succeeded` -> decode the response.\n- `Failed` or `Canceled` -> report the error.\n- Timeout -> show the portal link and stop.\n\n### Step 5: Confirm Fresh Results\n\nDecode the portal's four telemetry report families:\n\n- `Suitability` \u002F `Suitability_V2`.\n- `SKURecommendation_AzureSQLVM` \u002F `_V2`.\n- `SKURecommendation_AzureSQLMI` \u002F `_V2`.\n- `SKURecommendation_AzureSQLDB` \u002F `_V2`.\n\nFor each family, select the report with the newer telemetry\n`ObservedTimestampUTC`. Use Suitability for readiness and blockers, and the\nthree SKU reports for sizing and recommendation details.\n\nCompare the selected Suitability `EndedOn` with the trigger request time after\nconverting both to UTC. Also require each available\nselected SKU report's `ObservedTimestampUTC` to be later than the trigger\nrequest time. If any selected report is stale, repeat telemetry retrieval and\ndecoding up to three times for report propagation. Use the job only for running,\nfresh success, and failure state.\n\nUse the selected fresh telemetry reports as the source for readiness, blockers,\ntarget SKU, requirements, recommendation details, and available monetary cost\nfields.\n\n### Step 6: Render\n\nUse the recommended target and available cost from the fresh telemetry selected\nin Step 5.\n\nUse [assessment output](..\u002Freferences\u002Fassessment-output.md) to render the combined\nreadiness and SKU recommendation. Include the portal report link.\n\n## Notes\n\n- Follow the transport rules in `references\u002Fcommand-execution.md`.\n- Run its PowerShell sections in order and execute each fenced block as one\n  terminal command.\n- The telemetry operation URL comes from `getTelemetry`.\n- Treat a successful telemetry LRO as report-read completion. Use\n  `MigrationJobOnDemand` for assessment-job completion.\n- Use `EndedOn` as the generated time.\n- Use only the recommended target and user databases in output.\n\n## References\n\n- `references\u002Fcommand-execution.md`\n- [ARM resource identification](..\u002Freferences\u002Farm-resource-identification.md)\n- [Assessment output](..\u002Freferences\u002Fassessment-output.md)\n",{"name":5,"description":7,"allowed-tools":28},"Bash(az:*, curl:*) PowerShell Grep View","main","d2b16500cb10bf44117390e08717ca731032d423","corenote\u002Fmigration\u002Fskills\u002Fevaluate-azure-migration-assessment",0,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-01 23:31:12",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add microsoft\u002Fsqlcon-eu-2026-demos --skill evaluate-azure-migration-assessment",{"tool":44,"command":45},"bunx","bunx skills add microsoft\u002Fsqlcon-eu-2026-demos --skill evaluate-azure-migration-assessment",{"tool":47,"command":48},"pnpm","pnpm dlx skills add microsoft\u002Fsqlcon-eu-2026-demos --skill evaluate-azure-migration-assessment","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Fevaluate-azure-migration-assessment\u002FSKILL.md",true,[52,58,62,66,70,74],{"path":53,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":56,"sourceHtmlUrl":57},"references\u002Fcommand-execution.md","REFERENCE","参考文档",15507,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Fevaluate-azure-migration-assessment\u002Freferences\u002Fcommand-execution.md",{"path":59,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":60,"sourceHtmlUrl":61},"references\u002Fcpp_docs.md",7507,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002F_collections\u002Frghamilton3-dotfiles\u002Fdot_claude\u002Fskills\u002Fcode-documenter\u002Freferences\u002Fcpp_docs.md",{"path":63,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":64,"sourceHtmlUrl":65},"references\u002Fdart_flutter_docs.md",11350,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002F_collections\u002Frghamilton3-dotfiles\u002Fdot_claude\u002Fskills\u002Fcode-documenter\u002Freferences\u002Fdart_flutter_docs.md",{"path":67,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fjavascript_typescript_docs.md",5353,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002F_collections\u002Frghamilton3-dotfiles\u002Fdot_claude\u002Fskills\u002Fcode-documenter\u002Freferences\u002Fjavascript_typescript_docs.md",{"path":71,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fpython_docs.md",3347,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002F_collections\u002Frghamilton3-dotfiles\u002Fdot_claude\u002Fskills\u002Fcode-documenter\u002Freferences\u002Fpython_docs.md",{"path":75,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":76,"sourceHtmlUrl":77},"skill-contract.yml",4330,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Fevaluate-azure-migration-assessment\u002Fskill-contract.yml",[79,93,109,119,130,141],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":90,"publishedAt":23},"01M69AGTKN8F66BXE45KQ3MDMX","keynote-demo-app","Build or extend a SQLCon EU 2026 keynote demo application so it looks and behaves like the other keynote apps. Use when creating a new demo view (invoices, operations, orders), restyling an existing app to match, adding a deliberate database anti-pattern for a troubleshooting demo, or wiring an app to Azure SQL or Fabric SQL with managed identity. Triggers include \"make this look like the keynote app\", \"build a demo view\", \"add the slow query demo\", \"match Caldova styling\".","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fshared\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[91,21,20,92],"keynote demo app","identity",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":105,"publishedAt":23},"01M69AGRAPA61AN2A2N2RF6NCJ","validate-post-migration-data","Validate data and schema after migrating SQL Server to Azure SQL Database, Azure SQL Managed Instance, or SQL Server on Azure VM. Use after migration, restore, BACPAC import, LRS completion, cutover validation, row-count comparison, or source-target reconciliation.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Fvalidate-post-migration-data\u002FSKILL.md",[99,100],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[106,107,22,21,108,20],"validate post migration data","validate","azure sql database",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":117,"publishedAt":23},"01M69AGNG0HQK50EW1CNEFTR1N","sql-server-to-sql-mi-lrs-migration","Migrate SQL Server databases to Azure SQL Managed Instance with Log Replay Service (LRS) using managed identity for Blob access. Use for SQL Server to SQL MI, LRS, log replay, continuous restore, or low-downtime backup-chain migrations.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Fsql-server-to-sql-mi-lrs-migration\u002FSKILL.md",[115,116],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},[118,22,21,20,92],"sql server to sql mi lrs migration",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":127,"publishedAt":23},"01M69AGJC50G0YX7VQ52SQ0AD0","sql-bacpac-to-azure-sql-db-migration","Migrate one or all user databases from SQL Server to Azure SQL Database with an offline BACPAC workflow. Use for BACPAC, SqlPackage export\u002Fimport, bulk database migration, or offline Azure SQL Database migration requests.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Fsql-bacpac-to-azure-sql-db-migration\u002FSKILL.md",[125,126],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},[128,21,20,22,108,129],"sql bacpac to azure sql db migration","workflow",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":138,"publishedAt":23},"01M69AGFTTX13PCFKM3YVHKGDV","sql-backup-restore-to-azure-sql-vm-migration","Migrate a SQL Server 2008 through SQL Server 2025 source to a SQL Server 2025 target wherever it runs, including SQL Server on Azure VM, by creating a local full backup, uploading it to Azure Blob Storage with AzCopy and the operator's Microsoft Entra identity, and restoring from URL with the target SQL Server managed identity. Sources newer than SQL Server 2025 are blocked because target restore compatibility has not been validated. Use for SQL-to-SQL, local-backup, AzCopy, managed-identity, Azure SQL VM, or SQL Server 2025 restore migrations.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Fsql-backup-restore-to-azure-sql-vm-migration\u002FSKILL.md",[136,137],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},[21,20,139,9,140,92,22],"sql backup restore to azure sql vm migration","storage",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":23},"01M69AGDP6XXM1YW7X1VV1QKE5","run-migration-assessment","Route generic or unresolved SQL Server assessment, readiness, compatibility, cost, and SKU recommendation requests. Use for bare server names or whenever Azure versus local\u002Fon-premises is not explicit; ask which source applies, then delegate.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsqlcon-eu-2026-demos\u002Fblob\u002Fmain\u002Fcorenote\u002Fmigration\u002Fskills\u002Frun-migration-assessment\u002FSKILL.md",[147],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[149,22,21],"run migration assessment"]