PageSourceSearch

https://powersync.com/assets/sync-sql-server-D2tcfMXh.js

js powersync.com collected 2026-09-24 19:06:53 UTC 33,023 bytes, 12 lines download raw bytes

1import{m as e}from"./index-DiM0WI7r.js";import{S as a,W as i}from"./SyncPageHero-uuy5G8G2.js";import{G as s}from"./GetStartedCards-DXDcrmyh.js";import"./index-hySvmGbY.js";import"./HeroCTAButtons-kU2mq-3s.js";import"./server-qT1iUhmD.js";const l=`<section class="ps-backend-db-real-time-sync-section"><div class="w-layout-blockcontainer ps-home-what-is-container w-container"><div class="real-time-sync-diagram-div"><div class="db-page-realtime-sync-heading-wrapper"><h2 class="dv-page-realtime-sync-heading">Add real-time sync to SQL Server</h2></div><div class="db-page-realtime-sync-paragraph-wrapper"><div class="db-page-realtime-sync-paragraph">PowerSync streams SQL Server changes to clients in real-time, so apps can query and mutate local SQLite without waiting on the network.<br/>‍<br/>Sync Streams handle partial syncing under the hood, giving every user just the data they need.</div></div><div class="db-page-realtime-sync-column-wrapper"><div class="realtime-sync-column"><div class="realtime-sync-column-text"><em class="italic-text">Backend</em></div></div><div class="realtime-sync-column powersync-column"><div class="realtime-sync-column-text"><em class="italic-text">PowerSync Service</em></div></div><div class="realtime-sync-column"><div class="realtime-sync-column-text"><em class="italic-text">Clients</em></div></div></div><div class="db-page-realtime-sync-element-wrapper"><div class="realtime-sync-element-column mysql"><div class="realtime-sync-db-element"><div class="realtime-sync-element-text">SQL Server</div><div class="realtime-sync-db-shape-wrapper"><div class="db-shape-row"><div class="triangle"></div><div class="square"></div></div><div class="db-shape-row"><div class="rectangle"></div><div class="circle"></div></div></div></div><div class="arrow-horizontal-container sync-rules-01 mysql"><div class="arrow-shaft-horizontal sync-rules-01"></div><div class="arrow-head-east sync-rules-01"></div></div><div class="logical-replication-text mysql"><em class="italic-text-11">CDC<br/>polling</em></div></div><div class="realtime-sync-element-column powersync-service-column"><div class="realtime-sync-sync-rules-element"><div class="realtime-sync-element-text">Sync Streams</div><div class="realtime-sync-sync-rules-shape-wrapper"><div class="sync-rules-shape-wrapper bottom-left"></div><div class="sync-rules-shape-wrapper top-right"></div><img src="/images/ui/circle.svg" loading="lazy" alt="" class="circle sync-rules"/><img src="/images/ui/square.svg" loading="lazy" alt="" class="square sync-rules"/><img src="/images/ui/triangle.svg" loading="lazy" alt="" class="triangle sync-rules"/></div></div><div class="websocket-http-text"><em class="italic-text-4">WebSocket or <br/>HTTP <br/>stream</em></div><div class="arrow-horizontal-container sync-rules-02 mysql"><div class="arrow-shaft-horizontal sync-rules-02"></div><div class="arrow-head-east sync-rules-02"></div></div><div class="arrow-horizontal-container sync-rules-03 mysql"><div class="arrow-shaft-horizontal sync-rules-03"></div><div class="arrow-head-east sync-rules-03"></div></div></div><div class="realtime-sync-element-column"><div class="sqlite-border"><div class="realtime-sync-sqlite-element"><div class="realtime-sync-element-text">SQLite</div><div class="realtime-sync-sqlite-shape-wrapper"><div class="db-shape-row sqlite"><div class="square"></div><div class="triangle"></div></div></div></div></div><div class="sqlite-border purple"><div class="realtime-sync-sqlite-element"><div class="realtime-sync-element-text">SQLite</div><div class="realtime-sync-sqlite-shape-wrapper"><div class="db-shape-row sqlite"><div class="square"></div><div class="circle"></div></div></div></div></div></div></div></div></div></section><section class="ps-backend-db-explainer-section"><div class="w-layout-blockcontainer backend-db-explainer-container w-container"><div class="w-layout-vflex backend-db-explainer-heading-text-div"><div class="ps-home-how-super-heading">SQL SERVER DATABASE, meet SQLite</div><h2 class="ps-backend-db-h2">How data syncs from SQL Server to client-side SQLite</h2></div>
1<div class="backend-db-explainer-content-wrapper"><div class="backend-db-explainer-content-vertical-wrapper"><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"></div><div class="explainer-content-center"><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-connection.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Privilege-scoped connection</div></div><p class="explainer-content-paragraph">PowerSync connects to your SQL Server database over TCP with permissions to read the source and CDC change tables.</p></div></div><div class="explainer-content-right"></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-center"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-replication.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Replication via CDC</div></div><p class="explainer-content-paragraph">After an initial snapshot of data is taken, PowerSync polls CDC change tables to capture row-level changes.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-bottom"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-low-maintenance.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Low maintenance</div></div><p class="explainer-content-paragraph">PowerSync is designed to automatically handle most schema change scenarios in SQL Server, with no need for client-side migrations. </p></div></div><div class="explainer-content-center"><div class="explainer-diagram-div"><div class="explainer-diagram-db-main-title">SQL Server</div><div class="backend-db-explainer-pills-div"><div class="backend-db-explainer-card-pill-div"><div class="how-diagram-db-component-title">Change Data Capture (CDC) change tables</div></div><div class="explainer-diagram-arrow-short-div"></div></div></div><div class="explainer-diagram-line-div"><div class="explainer-line-diagram-div"></div></div></div><div class="explainer-content-right"><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-bottom"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-filter.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Table and row filtering</div></div><p class="explainer-content-paragraph">PowerSync only syncs updates from the relevant source and CDC change tables based on the configured Sync Streams.</p></div></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"></div><div class="explainer-content-center"><div class="explainer-diagram-pill-div"><div class="explainer-diagram-db-title">CDC polling</div></div><div class="explainer-diagram-arrow-div hide-on-mobile"><div class="explainer-arrow-diagram"></div><img src="/images/arrows/arrow-head-south-cyan.svg" loading="lazy" alt="" class="explainer-diagram-arrowhead"/></div></div><div class="explainer-content-right"></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-center"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-cdc.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Operations history tracked</div></div><p class="explainer-content-paragraph">The PowerSync Service tracks changes to data in the buckets, allowing for efficient delta syncing to clients.</p></div></div><div class="explainer-content-center"><div class="explainer-blue-diagram-div"><div class="explainer-blue-diagram-db-main-title">PowerSync Service</div><div class="explainer-blue-diagram-items-wrapper"><div class="explainer-diagram-card-pill-div"><div class="explainer-diagram-db-icon w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-filetype-yml" viewBox="0 0 16 16">
2  <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM2.133 15.849v-1.535l1.339-2.464h-.856l-.855 1.696h-.032L.876 11.85H0l1.339 2.479v1.52zm2.287 0v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596H5.66L4.52 11.85h-.805v3.999zm4.71-.674h1.696v.674H8.338V11.85h.791v3.325Z"/>
3</svg></div><div class="explainer-diagram-db-component-title">Sync Streams</div></div><div class="realtime-sync-sync-rules-shape-wrapper"><div class="sync-rules-shape-wrapper bottom-left"></div><div class="sync-rules-shape-wrapper top-right"></div><img src="/images/ui/circle.svg" loading="lazy" alt="" class="circle sync-rules"/><img src="/images/ui/square.svg" loading="lazy" alt="" class="square sync-rules"/><img src="/images/ui/triangle.svg" loading="lazy" alt="" class="triangle sync-rules"/></div></div></div></div><div class="explainer-content-right"><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-sync-rules.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Sync Streams for partial sync</div></div><p class="explainer-content-paragraph">You define Sync Streams that control which data is synced to which users. Data is grouped and shared efficie
3ntly between users to avoid duplication.</p></div></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"></div><div class="explainer-content-center"></div><div class="explainer-content-right"></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"></div><div class="explainer-content-center"><div class="explainer-diagram-line-div"><div class="explainer-line-diagram-div"></div></div><div class="explainer-diagram-pill-div"><div class="explainer-diagram-db-title">WebSocket or HTTP stream</div></div><div class="explainer-diagram-arrow-div hide-on-mobile"><div class="explainer-arrow-diagram"></div><img src="/images/arrows/arrow-head-south-cyan.svg" loading="lazy" alt="" class="explainer-diagram-arrowhead"/></div></div><div class="explainer-content-right"><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-auth.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Authentication using JWTs</div></div><p class="explainer-content-paragraph">Clients authenticate against the PowerSync Service using JWTs.</p></div></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-real-time.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Real-time sync</div></div><p class="explainer-content-paragraph">The client SDK initially downloads all relevant data and then incrementally keeps it updated, in real time.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-bottom"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-offline.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Offline-first, including local writes</div></div><p class="explainer-content-paragraph">Writes are immediately applied locally, and queued for upload to your backend API. The PowerSync client SDK automatically handles failures and retries.</p></div></div><div class="explainer-content-center"><div class="explainer-blue-diagram-div"><div class="explainer-blue-diagram-db-main-title">PowerSync Client SDK</div><div class="explainer-diagram-card-div"><div class="w-layout-hflex explainer-diagram-card-label"><img src="/images/icons/icon-sqlite.svg" loading="lazy" alt="" class="explainer-powersync-sdk-sqlite-icon"/><div class="explainer-diagram-db-component-title">
3Client-side SQLite</div></div><div class="explainer-diagram-card-pill-div-flat"><img src="/images/icons/icon-table.svg" loading="lazy" alt="" class="how-powersync-sdk-icon"/><div class="how-diagram-db-title">App data tables</div></div><div class="explainer-diagram-card-pill-div-flat"><img src="/images/icons/icon-upload-queue.svg" loading="lazy" alt="" class="how-powersync-sdk-icon"/><div class="how-diagram-db-title">Upload queue</div></div></div></div></div><div class="explainer-content-right"><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-table.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Full database on the client-side</div></div><p class="explainer-content-paragraph">On the client, data is persisted to a SQLite database in schemaless format. The application defines a client-side schema which is applied as SQLite views.</p></div><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-reactive.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Reactive queries</div></div><p class="explainer-content-paragraph">Live reactive queries can be used to update the UI when data changes.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-bottom"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-consistency-guarantee-darker-blue.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Strong consistency guarantees</div></div><p class="explainer-content-paragraph">PowerSync uses a server-authoritative architecture with a checkpoint system to guarantee consistency.</p></div></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"></div><div class="explainer-content-center"><div class="explainer-diagram-arrow-div hide-on-mobile"><div class="explainer-arrow-diagram"></div><img src="/images/arrows/arrow-head-south-cyan.svg" loading="lazy" alt="" class="explainer-diagram-arrowhead"/></div></div><div class="explainer-content-right"></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-left"><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-write-upload.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Control over the write path</div></div><p class="explainer-content-paragraph">Your backend accepts uploaded writes and then applies them to your SQL Server database.</p></div></div><div class="explainer-content-center"><div class="how-backend-api-diagram-div"><div class="how-diagram-db-component-title">Backend API</div></div><div class="how-backend-api-spacer"><div class="spacer-wrapper"></div></div></div><div class="explainer-content-right"></div></div></div></div><div class="backend-db-explainer-content-wrapper--mobile-version visible-mobile"><div class="backend-db-explainer-content-vertical-wrapper"><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-center"><div class="explainer-diagram-div"><div class="explainer-diagram-db-main-title">MySQL</div><div class="backend-db-explainer-pills-div"><div class="backend-db-explainer-card-pill-div"><div class="how-diagram-db-component-title">Binlog</div></div></div></div><div class="explainer-diagram-line-div"><div class="explainer-line-diagram-div"></div></div></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-center"><div class="explainer-diagram-pill-div"><div class="explainer-diagram-db-title">Binlog events</div></div><div class="explainer-diagram-arrow-short-div"><div class="explainer-arrow-diagram"></div><img src="/images/arrows/arrow-head-south-cyan.svg" loading="lazy" alt="" class="explainer-diagram-arrowhead"/></div></div></div>
3<div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-center"><div class="explainer-blue-diagram-div"><div class="explainer-blue-diagram-db-main-title">PowerSync Service</div><div class="explainer-blue-diagram-items-wrapper"><div class="explainer-diagram-card-pill-div"><div class="explainer-diagram-db-icon w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-filetype-yml" viewBox="0 0 16 16">
4  <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM2.133 15.849v-1.535l1.339-2.464h-.856l-.855 1.696h-.032L.876 11.85H0l1.339 2.479v1.52zm2.287 0v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596H5.66L4.52 11.85h-.805v3.999zm4.71-.674h1.696v.674H8.338V11.85h.791v3.325Z"/>
5</svg></div><div class="explainer-diagram-db-component-title">Sync Streams</div></div><div class="w-layout-hflex explainer-diagram-squares-row-div"><div class="explainer-diagram-square-div"><img src="/images/icons/icon-bucket.svg" loading="lazy" alt="" class="icon-diagram-bucket"/></div><div class="explainer-diagram-square-div"><img src="/images/icons/icon-bucket.svg" loading="lazy" alt="" class="icon-diagram-bucket"/></div><div class="explainer-diagram-square-div"><img src="/images/icons/icon-bucket.svg" loading="lazy" alt="" class="icon-diagram-bucket"/></div><div class="explainer-diagram-square-div"><img src="/images/icons/icon-bucket.svg" loading="lazy" alt="" class="icon-diagram-bucket"/></div></div><div class="w-layout-hflex explainer-diagram-squares-row-div"><div class="explainer-diagram-square-div"><img src="/images/icons/icon-bucket.svg" loading="lazy" alt="" class="icon-diagram-bucket"/></div><div class="explainer-diagram-square-div"><img src="/images/icons/icon-bucket.svg" loading="lazy" alt="" class="icon-diagram-bucket"/></div><div class="explainer-diagram-square-div"><img src="/images/icons/icon-bucket.svg" loading="lazy" alt="" class="icon-diagram-bucket"/></div><div class="explainer-diagram-square-div"><img src="/images/icons/icon-bucket.svg" loading="lazy" alt="" class="icon-diagram-bucket"/></div></div></div></div></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-center"><div class="explainer-diagram-line-div"><div class="explainer-line-diagram-div"></div></div><div class="explainer-diagram-card-pill-div"><div class="explainer-diagram-db-title">WebSocket or HTTP stream</div></div><div class="explainer-diagram-arrow-short-div"><div class="explainer-arrow-diagram"></div><img src="/images/arrows/arrow-head-south-cyan.svg" loading="lazy" alt="" class="explainer-diagram-arrowhead"/></div></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-center"><div class="explainer-blue-diagram-div"><div class="explainer-blue-diagram-db-main-title">PowerSync Client SDK</div><div class="explainer-diagram-card-div"><div class="w-layout-hflex explainer-diagram-card-label"><img src="/images/icons/icon-sqlite.svg" loading="lazy" alt="" class="explainer-powersync-sdk-sqlite-icon"/><div class="explainer-diagram-db-component-title">
5Client-side SQLite</div></div><div class="explainer-diagram-card-pill-div-flat"><img src="/images/icons/icon-table.svg" loading="lazy" alt="" class="how-powersync-sdk-icon"/><div class="how-diagram-db-title">App data tables</div></div><div class="explainer-diagram-card-pill-div-flat"><img src="/images/icons/icon-upload-queue.svg" loading="lazy" alt="" class="how-powersync-sdk-icon"/><div class="how-diagram-db-title">Upload queue</div></div></div></div><div class="explainer-diagram-arrow-short-div"><div class="explainer-arrow-diagram"></div><img src="/images/arrows/arrow-head-south-cyan.svg" loading="lazy" alt="" class="explainer-diagram-arrowhead"/></div></div></div><div class="backend-db-explainer-content-horizontal-wrapper"><div class="explainer-content-center"><div class="backend-arrow-horizontal-bottom-connector"><div class="spacer-wrapper"></div></div><div class="how-backend-api-diagram-div"><div class="how-diagram-db-component-title">Backend API</div></div><div class="how-backend-api-spacer"><div class="spacer-wrapper"></div></div></div></div><div class="backend-db-explainer-text-wrapper"><div data-hover="false" data-delay="0" data-w-id="7f56f614-4c7d-8da9-8bab-1b138a57f7d5" style="height:80px" class="explainer-accordion-item w-dropdown"><div class="explainer-accordion-toggle w-dropdown-toggle"><div style="-webkit-transform:translate3d(0, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0deg) skew(0, 0);-moz-transform:translate3d(0, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0deg) skew(0, 0);-ms-transform:translate3d(0, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0deg) skew(0, 0);transform:translate3d(0, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0deg) skew(0, 0)" class="accordion-icon w-icon-dropdown-toggle"></div><div class="accordion-heading">On the server-side</div></div><nav class="explainer-accordion-content w-dropdown-list"><div class="w-layout-vflex accordion-item-content-wrapper"><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-connection.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Privilege-scoped connection</div></div><p class="explainer-content-paragraph">PowerSync connects to your SQL Server database over TCP with permissions to read the source and CDC change tables.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-center"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-replication.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Replication via CDC</div></div><p class="explainer-content-paragraph">After an initial snapshot of data is taken, PowerSync polls CDC change tables to capture row-level changes.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-center"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-low-maintenance.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Low maintenance</div></div><p class="explainer-content-paragraph">PowerSync is designed to automatically handle most schema change scenarios in SQL Server, with no need for client-side migrations.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-bottom"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-replication.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Table and row filtering</div></div><p class="explainer-content-paragraph">PowerSync only syncs updates from the relevant source and CDC change tables based on the configured Sync Streams.</p></div><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-sync-rules.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Sync Streams for partial sync</div></div><p class="explainer-content-paragraph">You define Sync Streams that control which data is synced to which users. Data is grouped and shared efficie
5ntly between users to avoid duplication.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-center"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-cdc.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Operations history tracked</div></div><p class="explainer-content-paragraph">The PowerSync Service tracks changes to data in the buckets, allowing for efficient delta syncing to clients.</p></div><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-auth.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Authentication using JWTs</div></div><p class="explainer-content-paragraph">Clients authenticate against the PowerSync Service using JWTs.</p></div></div></nav></div><div data-hover="false" data-delay="0" data-w-id="7f56f614-4c7d-8da9-8bab-1b138a57f80d" style="height:80px" class="explainer-accordion-item w-dropdown"><div class="explainer-accordion-toggle w-dropdown-toggle"><div style="-webkit-transform:translate3d(0, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0deg) skew(0, 0);-moz-transform:translate3d(0, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0deg) skew(0, 0);-ms-transform:translate3d(0, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0deg) skew(0, 0);transform:translate3d(0, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0deg) skew(0, 0)" class="accordion-icon w-icon-dropdown-toggle"></div><div class="accordion-heading">On the client-side</div></div><nav class="explainer-accordion-content w-dropdown-list"><div class="w-layout-vflex accordion-item-content-wrapper"><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-real-time.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Real-time sync</div></div><p class="explainer-content-paragraph">The client SDK initially downloads all relevant data and then incrementally keeps it updated, in real time.</p></div><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-table.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Full database on the client-side</div></div><p class="explainer-content-paragraph">On the client, data is persisted to a SQLite database in schemaless format. The application defines a client-side schema which is applied as SQLite views.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-bottom"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-offline.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Offline-first, including local writes</div></div><p class="explainer-content-paragraph">Writes are immediately applied locally, and queued for upload to your backend API. The PowerSync client SDK automatically handles failures and retries.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-bottom"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-reactive.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Reactive queries</div></div><p class="explainer-content-paragraph">Live reactive queries can be used to update the UI when data changes.</p></div><div class="w-layout-vflex explainer-text-wrapper explainer-wrapper-bottom"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-consistency-guarantee-darker-blue.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Strong consistency guarantees</div></div><p class="explainer-content-paragraph">PowerSync uses a server-authoritative architecture with a checkpoint system to guarantee consistency.</p></div><div class="w-layout-vflex explainer-text-wrapper"><div class="w-layout-hflex explainer-text-heading"><img src="/images/icons/icon-write-upload.svg" loading="lazy" alt="" class="explainer-heading-icon"/><div class="explainer-heading-text">Control over the write path</div></div><p class="explainer-content-paragraph">Your backend accepts uploaded writes and then applies them to your SQL Server database.</p></div></div></nav></div></div></div></div></div></section><section class="ps-backend-db-setup-instructions-section"><div class="w-layout-blockcontainer setup-instructions-container w-container"><div class="w-layout-hflex setup-instructions-wrapper"><div class="setup-instructions-text">See installation instructions:</div><a href="https://docs.powersync.com/installation/database-setup#sql-server" target="_blank" class="backend-db-setup-button w-inline-block"><div class="w-layout-hflex ps-home-header-button-text header-button-primary"><div class="ps-home-header-button-label">Source database setup</div><div class="ps-home-header-button-icon w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-box-arrow-up-right" viewBox="0 0 16 16">
6  <path fill-rule="evenodd" d="M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5"/>
7  <path fill-rule="evenodd" d="M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708
7L15 1.707V5.5a.5.5 0 0 0 1 0z"/>
8</svg></div></div></a></div></div></section><section class="ps-backend-db-cloud-deployments-section"><div class="w-layout-blockcontainer cloud-deployments-container w-container"><div class="w-layout-vflex cloud-deployments-wrapper"><h3 class="cloud-deployments-h3-heading">Highly scalable and enterprise-ready</h3><div class="w-layout-hflex cloud-deployments-cards-div"><div class="cloud-deployments-card"><div class="w-layout-hflex cloud-deployments-card-heading-div"><h4 class="cloud-deployments-card-heading">Horizontally scalable</h4></div><div class="cloud-deployments-card-diagram-div"><img src="/images/diagrams/diagram-cloud-deployment-horizontal-scalability.svg" loading="lazy" alt="" class="cloud-deployments-diagram"/></div><a href="#" class="cloud-deployments-learn-more-link w-inline-block"><div class="cloud-deployments-link-text">Learn more</div><div class="cloud-deployments-link-icon w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-arrow-right-short" viewBox="0 0 16 16">
9  <path fill-rule="evenodd" d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8"/>
10</svg></div></a></div><div class="cloud-deployments-card"><div class="w-layout-hflex cloud-deployments-card-heading-div"><h4 class="cloud-deployments-card-heading">AWS Private Endpoints available in Cloud</h4></div><div class="cloud-deployments-card-diagram-div"><img src="/images/diagrams/diagram-cloud-deployment-vpc-peering.svg" loading="lazy" alt="" class="cloud-deployments-diagram"/></div><a href="#" class="cloud-deployments-learn-more-link w-inline-block"><div class="cloud-deployments-link-text">Learn more</div><div class="cloud-deployments-link-icon w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-arrow-right-short" viewBox="0 0 16 16">
11  <path fill-rule="evenodd" d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8"/>
12</svg></div></a></div><div class="cloud-deployments-card"><div class="w-layout-vflex cloud-deployments-card-heading-div"><h4 class="cloud-deployments-card-heading">Sharded database support</h4><div class="cloud-deployments-pill"><div class="cloud-deployments-pill-text">Planned</div></div></div><div class="cloud-deployments-card-diagram-div"><img src="/images/diagrams/diagram-cloud-deployment-sharded-db.svg" loading="lazy" alt="" class="cloud-deployments-diagram"/></div></div></div><a href="/pricing" class="backend-db-setup-button w-inline-block"><div class="w-layout-hflex ps-home-header-button-text header-button-primary"><div class="ps-home-header-button-label">See pricing</div></div></a></div></div></section>`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(a,{heading:"Sync SQL Server with SQLite",description:"Avoid the complexities of using APIs to move app state over the network. Get super-fast, always-available offline-first/local-first apps.",dbIconSrc:"/images/icons/icon-sql-server-raw.svg",dbIconAlt:"Microsoft SQL Server"}),e.jsx(i,{html:l}),e.jsxs("section",{className:"mx-auto max-w-[900px] px-6 pb-[72px] pt-24",children:[e.jsx("h2",{className:"!mt-0 !mb-5 text-center text-[48px] font-bold leading-[52px] text-white",children:"Implement SQL Server & SQLite sync today"}),e.jsx(s,{})]})]})}export{v as component};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.