Software Assurance vs CSP Subscription
Same software, different rights. A perpetual license, a perpetual license with Software Assurance, and a CSP subscription each carry a different set of benefits. See which ones you get with each, and what owning versus subscribing costs over your timeline.
What each benefit does
New version rights
Upgrade to any version released while your coverage is active, without buying the license again.
Azure Hybrid Benefit
Use your licenses on Azure virtual machines so Azure charges for compute only, often cutting the VM price substantially.
License Mobility and Flexible Virtualization
Run SQL Server on shared hardware at other cloud providers or authorized outsourcers, instead of only on hardware you control.
Disaster recovery and per-VM licensing
Keep a passive failover instance without licensing it separately, and license individual virtual machines instead of every physical core of the host.
A summary for planning. The Microsoft Product Terms and your agreement govern; ask us to confirm rights for your exact scenario.
window.C2N = (function () { function esc(s) { return String(s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } function fire(el) { el.dispatchEvent(new Event('input', { bubbles: true })); el.dispatchEvent(new Event('change', { bubbles: true })); } function enhance(form) { [].forEach.call(form.querySelectorAll('select[data-seg]'), function (sel) { var seg = document.createElement('div'); seg.className = 'c2n-seg'; seg.setAttribute('role', 'radiogroup'); seg.style.gridTemplateColumns = 'repeat(' + Math.min(sel.options.length, +sel.dataset.seg || sel.options.length) + ',1fr)'; [].forEach.call(sel.options, function (o) { var b = document.createElement('button'); b.type = 'button'; b.textContent = o.textContent; b.dataset.v = o.value; b.setAttribute('role', 'radio'); b.addEventListener('click', function () { sel.value = o.value; sync(form); fire(sel); }); seg.appendChild(b); }); sel.hidden = true; sel.parentNode.insertBefore(seg, sel.nextSibling); }); [].forEach.call(form.querySelectorAll('input[data-range]'), function (num) { var r = num.dataset.range.split(','), rg = document.createElement('input'); rg.type = 'range'; rg.min = r[0]; rg.max = r[1]; rg.step = r[2] || 1; rg.className = 'c2n-range'; rg.setAttribute('aria-label', num.name); rg.addEventListener('input', function (e) { e.stopPropagation(); num.value = rg.value; fire(num); }); num.parentNode.appendChild(rg); }); } function sync(form) { [].forEach.call(form.querySelectorAll('select[data-seg]'), function (sel) { [].forEach.call(sel.nextSibling.children, function (b) { var on = b.dataset.v === sel.value; b.classList.toggle('on', on); b.setAttribute('aria-checked', on); }); }); [].forEach.call(form.querySelectorAll('input[data-range]'), function (num) { num.parentNode.querySelector('.c2n-range').value = num.value; }); } function render(el, r) { var h = '<div class="c2n-cx-bar"><span>Results · ' + esc(r.title) + (r.unit === undefined ? ' · USD' : r.unit) + '</span><span class="c2n-cx-live">Live</span></div>'; if (r.lead) h += '<p class="c2n-cx-lead">' + r.lead + '</p>'; if (r.kpis) h += '<div class="c2n-cx-kpis">' + r.kpis.map(function (k, i) { return '<div class="c2n-cx-kpi' + (i ? '' : ' on') + '"><small>' + esc(k[0]) + '</small><b>' + k[1] + '</b><span>' + (k[2] || '') + '</span></div>'; }).join('') + '</div>'; if (r.rows) { var cell = function (tag) { return function (c, i) { return '<' + tag + (i ? ' class="n"' : '') + '>' + c + '</' + tag + '>'; }; }; h += '<div class="c2n-cx-scroll"><table class="c2n-cx-table">' + (r.head ? '<tr>' + r.head.map(cell('th')).join('') + '</tr>' : '') + r.rows.map(function (row) { return '<tr>' + row.map(cell('td')).join('') + '</tr>'; }).join('') + (r.total ? '<tr class="t">' + r.total.map(cell('td')).join('') + '</tr>' : '') + '</table></div>'; } h += '<div class="c2n-cx-foot"><p>' + (r.note || '') + '</p>' + (r.cta ? '<a class="c2n-cx-btn" href="' + esc(r.cta[1]) + '">' + esc(r.cta[0]) + '</a>' : '') + '</div>'; el.innerHTML = h; } function money(n, d) { return (n < 0 ? '-$' : '$') + Math.abs(n).toLocaleString('en-US', { minimumFractionDigits: d || 0, maximumFractionDigits: d || 0 }); } function values(form) { var v = {}; [].forEach.call(form.elements, function (el) { if (el.name) v[el.name] = el.type === 'number' ? Math.max(0, +el.value || 0) : el.value; }); return v; } function restore(form) { var q = new URLSearchParams(location.search); [].forEach.call(form.elements, function (el) { if (el.name) { if (q.has(el.name)) el.value = q.get(el.name); } }); } function save(form) { var o = {}; [].forEach.call(form.elements, function (el) { if (el.name) o[el.name] = el.value; }); history.replaceState(null, '', '?' + new URLSearchParams(o)); } function mount(form, calc) { enhance(form); restore(form); var run = function () { sync(form); calc(values(form)); save(form); }; form.addEventListener('input', run); form.addEventListener('submit', function (e) { e.preventDefault(); }); run(); } return { mount: mount, render: render, money: money, esc: esc, sync: sync, enhance: enhance }; })(); (function () { var P = {"Windows Server 2025 Standard - 16 Core License Pack":{"Nonprofit|One-time purchase (perpetual)":470.0,"Commercial|One-time purchase (perpetual)":1176.0,"Education|One-time purchase (perpetual)":294.0},"Windows Server 2025 Standard - 2 Core":{"Education|One-time purchase (perpetual)":36.0,"Commercial|One-time purchase (perpetual)":147.0,"Nonprofit|One-time purchase (perpetual)":58.0},"Windows Server 2025 Standard - 8 Core License Pack 1 Year":{"Commercial|1-year subscription, billed annually":275.0,"Commercial|1-year subscription, billed monthly":288.72},"Windows Server 2025 Standard - 2 Core License Pack 1 Year":{"Commercial|1-year subscription, billed annually":68.0,"Commercial|1-year subscription, billed monthly":71.4},"SQL Server 2025 Standard core - 2 core License Pack":{"Nonprofit|One-time purchase (perpetual)":1577.0,"Commercial|One-time purchase (perpetual)":3944.0,"Education|One-time purchase (perpetual)":986.0},"SQL Server 2025 Standard - 2 core License Pack - 1 year":{"Commercial|1-year subscription, billed annually":1863.0,"Commercial|1-year subscription, billed monthly":1956.12}}; var perpK = 'Commercial|One-time purchase (perpetual)', subK = 'Commercial|1-year subscription, billed annually', $ = C2N.money; var Y = '<span class="c2n-cx-ok">Yes</span>', N = '<span style="color:#C9C3BA">No</span>'; var ROWS = [ ['You own it after the term ends', [Y, Y, N], 'all'], ['New versions released during the term', [N, Y, Y], 'all'], ['Azure Hybrid Benefit', [N, Y, Y], 'all'], ['License Mobility to other clouds', [N, Y, Y], 'sql'], ['Flexible Virtualization (authorized outsourcers)', [N, Y, Y], 'all'], ['Passive disaster-recovery instance', [N, Y, Y], 'all'], ['License individual VMs', [N, Y, Y], 'all'], ['How you pay', ['Once', 'Once + yearly SA', 'Yearly or monthly'], 'all']]; C2N.mount(document.getElementById('sa'), function (v) { var yrs = +v.years, servers = Math.max(1, v.servers), perp, sub, unitName; if (v.prod === 'ws') { var c = Math.max(16, v.cores + v.cores % 2); perp = (Math.floor(c / 16) * P['Windows Server 2025 Standard - 16 Core License Pack'][perpK] + (c % 16) / 2 * P['Windows Server 2025 Standard - 2 Core'][perpK]) * servers; sub = (Math.floor(c / 8) * P['Windows Server 2025 Standard - 8 Core License Pack 1 Year'][subK] + (c % 8) / 2 * P['Windows Server 2025 Standard - 2 Core License Pack 1 Year'][subK]) * servers; unitName = 'Windows Server 2025 Standard, ' + servers + ' x ' + c + ' cores'; } else { var s = Math.max(4, v.cores + v.cores % 2); perp = s / 2 * P['SQL Server 2025 Standard core - 2 core License Pack'][perpK] * servers; sub = s / 2 * P['SQL Server 2025 Standard - 2 core License Pack - 1 year'][subK] * servers; unitName = 'SQL Server 2025 Standard, ' + servers + ' x ' + s + ' cores'; } var subTotal = sub * yrs, even = Math.ceil(perp / sub); C2N.render(document.getElementById('sa-out'), { title: 'Licensing channels', lead: unitName + ': buying perpetual costs ' + $(perp) + ' once; subscribing costs ' + $(sub) + ' a year. Subscribing stays cheaper for the first <strong>' + Math.max(0, even - 1) + ' year' + (even - 1 === 1 ? '' : 's') + '</strong> and adds the rights below. Software Assurance pricing depends on your agreement; ask us to quote it.', kpis: [['Perpetual, ' + yrs + ' yr', $(perp), 'one-time, no new versions'], ['Subscription, ' + yrs + ' yr', $(subTotal), $(sub) + ' a year, rights included']], head: ['Benefit', 'Perpetual', 'Perpetual + SA', 'CSP subscription'], rows: ROWS.filter(function (r) { return r[2] === 'all' || r[2] === v.prod; }).map(function (r) { return [r[0]].concat(r[1]); }), note: 'Licenses at Microsoft US list price, Commercial, current month. Summary only; the Microsoft Product Terms govern.', cta: ['Ask which fits', '/tools/forms/?f=quote&items=' + encodeURIComponent(unitName + ', ' + yrs + ' years: perpetual vs subscription vs SA')] }); }); })();