SQL Server Licensing Calculator
One database, four ways to pay. Compare running SQL Server on your own hardware (per core or Server + CAL), on an Azure VM with your own subscription licenses, on AWS with the license included, and on Azure SQL. Year-one and three-year totals side by side.
What each option means
Your own server, per core
License every core of the server (or every vCPU of the VM), minimum 4. Unlimited users, no CALs. Perpetual licenses are bought once; hardware, power and support are not included here.
Your own server, Server + CAL (Standard only)
One server license plus a CAL for every user or device that connects. Usually cheaper when a small, known group of people uses the database.
Azure VM with Hybrid Benefit
Run SQL Server on an Azure VM and apply your own SQL Server subscription licenses, so Azure bills compute only. Shown with 1-year and 3-year subscription licenses.
AWS license-included and Azure SQL
The cloud provider bundles the SQL license into an hourly or monthly rate. Simple to buy, but you pay for the license as long as the workload runs.
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 = {"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 Enterprise core - 2 core License Pack":{"Commercial|One-time purchase (perpetual)":15122.0,"Education|One-time purchase (perpetual)":3780.0,"Nonprofit|One-time purchase (perpetual)":6049.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},"SQL Server 2025 Enterprise - 2 core License Pack - 1 year":{"Commercial|1-year subscription, billed annually":7142.0,"Commercial|1-year subscription, billed monthly":7499.04},"SQL Server 2025 Standard - 2 core License Pack - 3 year":{"Commercial|3-year subscription, billed annually":4679.01,"Commercial|3-year subscription, billed once for 3 years":4679.0},"SQL Server 2025 Enterprise - 2 core License Pack - 3 year":{"Commercial|3-year subscription, billed once for 3 years":17932.0,"Commercial|3-year subscription, billed annually":17931.99},"SQL Server 2025 Standard edition Perpetual 1 Server License":{"Education|One-time purchase (perpetual)":246.0,"Nonprofit|One-time purchase (perpetual)":395.0,"Commercial|One-time purchase (perpetual)":987.0},"SQL Server 2025 - 1 User CAL":{"Education|One-time purchase (perpetual)":57.0,"Nonprofit|One-time purchase (perpetual)":91.0,"Commercial|One-time purchase (perpetual)":229.0}}; var C = 'Commercial|', $ = C2N.money; C2N.mount(document.getElementById('sq'), function (v) { var cores = Math.max(4, v.cores + v.cores % 2), packs = cores / 2, ed = v.ed, ent = ed === 'Enterprise'; [].forEach.call(document.querySelectorAll('#sq [data-ed]'), function (l) { l.hidden = l.dataset.ed !== ed; }); var aws = ent ? v.awse : v.aws, azsql = ent ? v.azsqle : v.azsql; var perp = packs * P['SQL Server 2025 ' + ed + ' core - 2 core License Pack'][C + 'One-time purchase (perpetual)']; var sub1 = packs * P['SQL Server 2025 ' + ed + ' - 2 core License Pack - 1 year'][C + '1-year subscription, billed annually']; var sub3 = packs * P['SQL Server 2025 ' + ed + ' - 2 core License Pack - 3 year'][C + '3-year subscription, billed once for 3 years']; var scal = ed === 'Standard' ? P['SQL Server 2025 Standard edition Perpetual 1 Server License'][C + 'One-time purchase (perpetual)'] + v.users * P['SQL Server 2025 - 1 User CAL'][C + 'One-time purchase (perpetual)'] : null; var opts = [ ['Own server, per core (' + cores + ' cores)', perp, perp], ['Own server, Server + ' + v.users + ' CALs', scal, scal], ['Azure VM + SQL subscription', sub1 + v.azvm * 12, sub3 + v.azvm * 36], ['AWS, license included', aws * 730 * 12, aws * 730 * 36], ['Azure SQL', azsql * 12, azsql * 36] ]; var live = opts.filter(function (o) { return o[1] !== null; }), best3 = live.slice().sort(function (a, b) { return a[2] - b[2]; })[0], best1 = live.slice().sort(function (a, b) { return a[1] - b[1]; })[0]; C2N.render(document.getElementById('sq-out'), { title: 'SQL Server ' + ed, lead: 'Over three years, <strong>' + best3[0].replace(/ \(.*\)/, '') + '</strong> costs least at ' + $(best3[2]) + '. Own-server figures cover licenses only; add your hardware and running costs before comparing with the cloud.', kpis: [['Lowest over 3 years', $(best3[2]), best3[0]], ['Lowest in year one', $(best1[1]), best1[0]]], head: ['Option', 'Year 1', '3 years'], rows: opts.map(function (o) { return o[1] === null ? [o[0], 'Standard only', ''] : [o[0], $(o[1]), $(o[2])]; }), note: 'SQL licenses at Microsoft US list price, Commercial, current month. Cloud rates are your estimates. A person confirms every quote.', cta: ['Request a quote', '/tools/forms/?f=quote&items=' + encodeURIComponent('SQL Server 2025 ' + ed + ', ' + cores + ' cores; compare per-core, Server+CAL (' + v.users + ' users) and Azure options')] }); }); })();