| Requirement | Details |
|---|---|
| Operating System | Windows 10/11 or Windows Server 2016+ |
| PowerShell | Version 5.1 or later (run $PSVersionTable.PSVersion to check) |
| SQL PowerShell Module | SqlServer module (recommended) or SQLPS (legacy). Install with: Install-Module SqlServer -AllowClobber -Force |
| SSMS (optional) | SQL Server Management Studio — installs the SqlServer module automatically |
| Network Access | TCP connectivity to target SQL Servers on port 1433 (or custom port) |
| Execution Policy | RunMefirst.bat sets -ExecutionPolicy Bypass automatically. If running manually: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass |
| Auth Mode | What's Needed |
|---|---|
| Windows Auth (W) | The Windows account running the collector must have sysadmin or VIEW SERVER STATE + VIEW ANY DEFINITION on each target SQL Server |
| SQL Auth (S) | A SQL login with sysadmin or VIEW SERVER STATE + VIEW ANY DEFINITION |
sysadmin is the simplest option. If that's not possible, the minimum permissions are VIEW SERVER STATE and VIEW ANY DEFINITION on each target server. The collector runs read-only queries — no data is modified.| Requirement | Details |
|---|---|
| SQL Server Version | SQL Server 2012 or later |
| Query Store (optional) | SQL Server 2016+ for Query Store P95 metrics. Not required — the collector falls back to ring buffer or defaults. |
| xp_fixeddrives | Used for storage collection. Requires sysadmin or the procedure must be accessible. |
Before uploading to the web app, you need to collect data from your SQL Server instances.
Click Download Collector on the main page, or get RdsCollector.zip from the repository.
RunMefirst.bat (or run RunMefirst.ps1 in PowerShell)in/servers.txt (one per line) before running.The collector creates: CUSTOMERNAME_RdsCollector_YYYYMMDD_HHMMSS.zip
You may see one of these errors when running the collector:
The specified module 'SQLSERVER' was not loadedA connection was successfully established with the server, but then an error occurred... The certificate chain was issued by an authority that is not trusted| Module | Source | TrustServerCertificate | Status |
|---|---|---|---|
| SqlServer | PowerShell Gallery | Available | Recommended |
| SQLPS | Bundled with SQL Server / SSMS | Not Available | Legacy |
Both modules connect to SQL Server, but only the SqlServer module's Invoke-Sqlcmd has the -TrustServerCertificate parameter. This parameter tells PowerShell to accept the SQL Server's self-signed certificate. SQL Server 2022+ enforces encryption by default, so without this parameter, connections fail with a certificate error.
Run this in PowerShell:
# Check SQL modules
Write-Host "=== SQL Modules ===" -ForegroundColor Cyan
Get-Module SqlServer -ListAvailable | Select Name, Version | Format-Table
Get-Module SQLPS -ListAvailable | Select Name, Version | Format-Table
# Check TrustServerCertificate support
$cmd = Get-Command Invoke-Sqlcmd -ErrorAction SilentlyContinue
if ($cmd) {
$has = $cmd.Parameters.ContainsKey('TrustServerCertificate')
Write-Host "TrustServerCertificate = $has"
Write-Host "Will use: $(if($has){'RdsCollector.ps1'}else{'RdsCollector_compatible.ps1'})"
} else {
Write-Host "Invoke-Sqlcmd: NOT FOUND" -ForegroundColor Red
}
The collector uses a launcher that auto-detects your environment:
| Step | What Happens |
|---|---|
| 1 | Launcher checks for SqlServer module, falls back to SQLPS |
| 2 | Tests if Invoke-Sqlcmd supports -TrustServerCertificate |
| 3a | If supported → runs RdsCollector.ps1 (standard version) |
| 3b | If not supported → runs RdsCollector_compatible.ps1 (no certificate flag) |
Run PowerShell as Administrator:
Install-Module -Name SqlServer -AllowClobber -Force
If you can't run as admin:
Install-Module -Name SqlServer -AllowClobber -Force -Scope CurrentUser
SQL Server Management Studio includes the SqlServer module. Download from Microsoft.
If you can't install anything, the launcher auto-detects SQLPS and uses the compatible version. This works for SQL Server 2019 and earlier.
Force Encryption = Yes, the compatible version may still fail. In that case, Option 1 is required.The collector uses a 3-tier fallback chain to gather the best available CPU and memory utilization metrics from each SQL Server instance. Higher tiers provide more accurate data and higher confidence in the optimized instance recommendation.
P95 CPU & Memory from up to 30 days of Query Store data
P95 CPU from ~4 hours of ring buffer snapshots. Memory from PLE heuristic.
60% CPU reduction, 75% memory. Conservative defaults when no metrics available.
When Query Store is enabled, the collector reads sys.query_store_runtime_stats to calculate P95 CPU and memory utilization over the last 30 days. This provides the most accurate picture of actual workload.
avg_cpu_time across all query executionsavg_query_max_used_memory (query memory grants only)sys.query_store_runtime_stats which scans up to 30 days of QS data. On servers with large Query Stores (thousands of queries/high transaction volume), this read operation can be CPU and I/O intensive. Recommend running the collector during off-peak hours or a maintenance window. The query is read-only and does not modify any data, but it competes for server resources while running.in/QSConfig.json:
When Query Store is not available (coverage = 0%), the collector automatically falls back to system-level metrics that are always available — no configuration needed.
RING_BUFFER_SCHEDULER_MONITOR from sys.dm_os_ring_buffers — the last ~4 hours of SQL Server CPU utilization snapshots. Calculates P95 using PERCENTILE_CONT(0.95).If both Query Store and Ring Buffer return no usable metrics (P95 = 0), the optimization engine applies conservative defaults based on the AWS RDS Cost Optimization Best Practices paper:
target = ceil(physicalCores × 0.40)target = ceil(provisioned × 0.75)These defaults ensure a safe starting point while still delivering meaningful cost savings over like-to-like sizing.
| Source | Confidence | Coverage |
|---|---|---|
| Query Store (30-day history) | HIGH | Requires QS enabled — covers days/weeks of data |
| Ring Buffer (~4 hours) | MEDIUM | Always available — covers last ~4 hours of samples |
| PLE Heuristic (memory only) | MEDIUM | Always available — estimates pressure from Page Life Expectancy |
| No data available | LOW | Falls back to 60% CPU reduction, 75% memory |
Amazon employees can access additional converter tools from the QuickDBC Hub (/hub.html). These convert data from various sources into the RdsDiscovery format for analysis. Each converter produces the same dashboard, DBC download, and PDF report as a regular collector upload.
/evolve)Converts Evolve OLA export files (.xlsb or .xlsx) into RDS assessments.
/me)Converts Migration Evaluator export files into RDS assessments. Supports two files for richer data.
SERVER01\MSSQLSERVER, SERVER01\SQLEXPRESS)/cmdb)Converts the CMDB Data Collection Template (.xlsb or .xlsx) into RDS assessments.
/rvtools)Converts RVTools VM inventory exports (.xlsx) into RDS assessments with interactive SQL Server detection.
/generic)Converts any CSV or XLSX with SQL Server inventory data into RDS assessments. Flexible column matching.
| Data | Collector ZIP | Evolve | ME | CMDB | RVTools | Generic |
|---|---|---|---|---|---|---|
| SQL Edition | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| SQL Version | ✅ | ✅ | ✅ | ✅ | ❌ | Optional |
| P95 CPU/Memory | ✅ QS/Ring Buffer | ✅ Peak | ✅ P95 | ✅ Max CPU | ❌ | Optional |
| Feature Detection | ✅ 22 checks | ❌ | SSIS/SSRS only | ❌ | ❌ | ❌ |
| IOPS/Throughput | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| Cluster/Role | ✅ | ✅ | FCI only | ✅ | ❌ | Optional |
| Storage | ✅ | ✅ | ✅ | ✅ | ✅ | Optional |
| Non-SQL VMs | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
Three cards at the top show:
| Column | Description |
|---|---|
| Server Name | SQL Server hostname |
| SQL Server Current Edition | Enterprise, Standard, Web, Express, Developer |
| CPU | Current vCPU count |
| Memory | Current memory in GB |
| P95 CPU Utilization (%) | 95th percentile CPU usage |
| P95 Memory Utilization (%) | 95th percentile memory usage |
| Instance Type | Like-to-like RDS instance recommendation |
| Optimized Instance Type | Right-sized recommendation based on actual usage |
| RDS Compatible | Y or N |
| RDS Blockers | Features preventing RDS migration (if any) |
When you have multiple uploads, a dropdown appears above the summary cards. Select any previous assessment to view it. You can also delete individual uploads with the Delete button.
Click Download Enriched DBC.csv to get the DBC file with added recommendation columns (Instance Type, Optimized Instance Type, vCPU/memory for optimized). Useful for TCO analysis and external reporting.
Click Download PDF Report to generate a PDF containing:
The recipient will see your assessment under Shared with me when they log in. They get view-only access with full details, charts, and DBC download — but cannot re-share.
Scroll down to the Shared with me section to see assessments others have shared with you. Click any shared assessment to view the full analysis.
Use the language dropdown in the top-right corner to switch between:
| Code | Language |
|---|---|
| en | English |
| es | Español (Spanish) |
| ko | 한국어 (Korean) |
| ja | 日本語 (Japanese) |
| pt | Português (Portuguese) |
Your language preference is saved automatically.
The collector works with SQL Server 2012 and later. Query Store metrics require SQL Server 2016+.
The server uses features not supported on Amazon RDS (e.g., SSIS, SSRS, FILESTREAM, linked servers). Check the RDS Blockers column for specifics. These servers may be candidates for RDS Custom or EC2.
Instance Type is a like-to-like match (same CPU/memory). Optimized Instance Type is right-sized based on actual P95 utilization — often smaller and cheaper.
Yes, if possible. Query Store provides 30 days of workload history and gives the highest confidence recommendations. Without it, the tool falls back to ring buffer (~4 hours) or conservative defaults. Query Store is read-only and has minimal performance impact.
Yes. Each upload is saved separately. Use the Upload History dropdown to switch between them.
Only you, anyone you explicitly share with, and admins.