Jeff Taylor
Principal Data Consultant
Database Consulting, LLC
Your Daily Driver
Got an Overhaul
What's new in SSMS 21 and SSMS 22
Jeff Taylor
Principal Data Consultant
Database Consulting, LLC





Super Hero Suit



Questions
- What is your role?
- Which version of SSMS do you use?
- Have you tried GitHub Copilot in SSMS yet?
Agenda
- SSMS 21 - the rebuild, all the new features
- Copilot in SSMS 21 - and why Microsoft changed it
- SSMS 22 - GitHub Copilot, Schema Compare, formatting, and more
- Gotchas and recap


SSMS 21
64-bit, new installer, dark theme

Finally, 64-bit
64-bit
- The old pain - 32-bit SSMS ran out of memory on big scripts and huge result grids
- SSMS 21 - a 64-bit application on the Visual Studio 2022 shell
- The result - fewer out-of-memory errors on large scripts and result sets

New installer, automatic updates
Install
- Visual Studio Installer - the same installer Visual Studio uses
- Automatic updates - stop hunting for the download link every few months
- Workloads and Components - install only what you need, smaller footprint

Dark theme
Demo
Object Explorer, Query Editor, Results, Template Explorer.
Tab options
Tabs
- Vertical tabs - see 20 open windows down the side, not crammed across the top
- Tab coloring - color by project or file type, so prod and dev look different
- Tab width - set a min and max so titles stay readable

Results grid options
Results
- NULL coloring - give NULL cells their own font and background color
- Grid font - set it once, read it from the back of the room

Modern connection dialog
Connect
- New dialog - recents, favorites, and Azure browsing in one place
- Opt-in preview in 21 - the classic dialog is still the default here (that changes in 22)

SQL Projects
Projects
- Database as code - your schema lives in a project, in source control
- Build and publish - deploy from a known-good definition, not ad hoc scripts
Always Encrypted Assessment
Security
- Find it - right-click a database, Tasks, Always Encrypted Wizard (formerly Encrypt Columns)
- Assessment - flags the columns that can't be encrypted, and why
- Report - export the results to CSV or text
- Skips failures - only the columns that pass get encrypted
Always Encrypted Wizard
Security
- Online encryption - apps keep working during it, needs a primary key
- Managed HSM - create new keys in Azure Key Vault Managed HSM
- SSMS 22 - Key Vault sign-in fix for federated identity (22.4.1)
- Not supported - temporal and in-memory tables
- After encrypting - clear the plan cache, or the first run of an affected query can fail
Copilot in SSMS, take one
Copilot
- The first Copilot - built on Azure OpenAI, you brought your own endpoint and keys
- The problem - cumbersome to set up, and clunky to use
- Good news - Microsoft reworked it in 22, so that's the version we'll spend time on
SSMS 22
GitHub Copilot, Database DevOps, and more

Connection dialog, now the default
Connect
- Now the default - the modern dialog replaces the classic one
- Strict encryption (TDS 8.0) - the secure default for new connections
- Gotcha - no valid certificate means a connection error the first time you connect

Connection dialog upgrades
Connect
- Hostname in certificate - on the main view, for certs that don't match the server name (22.9)
- Import and export - move saved connections to a new machine (22.9)
- Browse Azure and Fabric - search subscriptions, now including Managed Instances (22.9)
- More saved connections - up to 60 recents and favorites (22.9)
- Entra Integrated - Azure SQL and Managed Instance, even with Web Account Manager off (22.11)
Windows Arm64
Arm64
- Native Arm64 - connect and query natively on Arm64 Windows (22.0)
- Profiler and Database Engine Tuning Advisor (DTA) - added in 22.3, running as 32-bit apps
GitHub Copilot, the retune
Copilot
- A new Copilot - Microsoft replaced the Azure OpenAI version with GitHub Copilot
- Just sign in - a GitHub account, no endpoints or keys to wire up
- Chat and completions - reached general availability in 22.4.1
Chat: write, explain, fix
Demo
-- Prompts I actually use in the chat window
Write a query to find the top 10 customers by total order value
Explain what this stored procedure does
Why is this query slow, and how would you rewrite it?
Add error handling and a transaction to this scriptEditor autocompletions
Autocomplete
- As you type - Copilot suggests the rest of the line of T-SQL
- Tab to accept - or keep typing to ignore the suggestion
- Off by default - since 22.5.2, turn them on in Tools, Options, Text Editor, Inline Suggestions
Copilot instructions
Instructions
- Custom instructions - your own rules for every chat (22.4.1)
- Database instructions - stored on the database, picked up automatically (22.3)
- CONSTITUTION.md - an extended property that sets the login Copilot runs as (22.7)
Agent Mode
Copilot
- Tasks, not queries - describe the job, it plans the steps (preview in 22.7, GA in 22.10.2)
- What it does - runs queries, reads execution plans, proposes schema changes
- Approvals - it confirms each action before it runs
- Permissions - it runs as the login you connected with
Agent Mode
Demo
Describe the job, approve each step, see what it found.
Agent Mode skills
Agent Mode
- Performance - slow query investigation, wait categories, IO pressure, memory issues (22.8)
- Health - statistics assessments, resource usage, active connections
- DR - check my geo DR status
- Object Explorer - Copilot can work with the objects you're connected to (22.9)
Agent Mode permissions
Security
Who does Copilot run as?
You.
- Permissions - every query runs with your login's permissions
- Approvals - the prompt confirms intent, it isn't a security boundary
- The fix - a least-privilege login, or agent ExecuteAsUser in CONSTITUTION.md
Database DevOps
Projects
- Now GA - the Database DevOps workload left preview in 22.10.2
- Create Project from Database - right-click a database in Object Explorer
- 74 item templates - tables, views, security, storage, programmability
- References - DACPAC, another project, NuGet package, or a system database
- Profiles - open .scmp and .publish.xml files from Solution Explorer
Schema Compare
Projects
- Compare - databases, .dacpac files, and SQL projects (preview in 22.7, GA in 22.10.2)
- Save as .scmp - save the compare and rerun it later
- SQLCMD variables - now supported in the publish dialog
Schema Compare
Demo
SSMSDemo vs. its project, save the .scmp, publish.
T-SQL formatting
Before
select o.OrderId,c.Name,sum(od.Qty*od.Price) total from Orders o join Customers c on c.Id=o.CustId join OrderDetail od on od.OrderId=o.OrderId group by o.OrderId,c.NameUSE [SSMSDemo];
GO
-- BEFORE: paste this as one line, then run the formatter live.
select o.OrderId,c.Name,sum(od.Qty*od.Price) total from Orders o join Customers c on c.Id=o.CustId join OrderDetail od
on od.OrderId=o.OrderId group by o.OrderId,c.Name
GOT-SQL formatting
After
SELECT
o.OrderId,
c.Name,
SUM(od.Qty * od.Price) AS total
FROM Orders o
JOIN Customers c ON c.Id = o.CustId
JOIN OrderDetail od ON od.OrderId = o.OrderId
GROUP BY
o.OrderId,
c.Name;-- AFTER: what the formatter produces (shown here so you have the target).
SELECT
o.OrderId,
c.Name,
SUM(od.Qty * od.Price) AS total
FROM Orders o
JOIN Customers c ON c.Id = o.CustId
JOIN OrderDetail od ON od.OrderId = o.OrderId
GROUP BY
o.OrderId,
c.Name;
GOFormatter settings
Settings
- Indents - tabs or spaces (22.9)
- Commas - leading or trailing
- Aliases - AS, an equals sign, or the original style
- Live preview - before and after T-SQL in the settings dialog
- New in 22.10.2 - brackets, identifier casing, IN lists, JOIN and ON line breaks
Grid zoom and status-bar aggregates
Results
- Zoom the grid - hold Ctrl and roll the mouse wheel to zoom results in and out
- Status-bar aggregates - select numbers in the grid, see SUM, COUNT, AVG at the bottom
Results and diagnostics
Results
- Save as - Excel, JSON, Markdown, or XML from the grid (22.4.1)
- Include headers - a checkbox on the Save Grid Results dialog (22.10.2)
- Data type tooltip - hover a column to see its type (22.6)
- Execution plan defaults - keep actual plans, client statistics, or live query stats on (22.10.2)
Results grid
Demo
Zoom, aggregates, Save as Markdown, plan defaults.
JSON and vector
New types
- JSON index wizard - create an index on JSON data through the UI, no T-SQL
- View JSON in the grid - open and read JSON values from the results
- Vector index - right-click Indexes, New Index, Vector Index
- Vector columns - Table Designer and Edit Data both handle the vector type
Fabric integration
Fabric
- Warehouses and SQL endpoints - work Fabric objects from SSMS
- Browsing - organize by schema, query snapshots, context-aware menus
- Open in Fabric Portal - right-click a Fabric SQL Database (22.10.2)


Odds and ends
More
- Linked server wizard - a streamlined create flow with encryption options
- Import settings - carry over registered servers, shortcuts, and preferences from a prior version
- Group by schema - a toggle in Object Explorer (22.4.1)
- Database Properties - Auto Index Compaction (22.8) and TIME_ZONE (22.9)
- Migrate to Azure SQL - readiness assessment and migration built into SSMS (22.5)
Keep in mind
Gotchas
- Strict encryption default - a cert error on first connect can surprise you
- Agent Mode permissions - connect with a least-privilege login
- Copilot completions - off by default since 22.5.2, turn them on
- Stay current - 22.11.0 is current as of October 13, 2026
Recap
Next steps
- Move to SSMS 21 for 64-bit and dark mode
- Then SSMS 22 for GitHub Copilot and Database DevOps
- Turn on completions, try Agent Mode in dev with a least-privilege login
- Expect Strict encryption, fix your certificates first

Resources
Questions?
Thank you!
Jeff Taylor
Thank you for attending my session today.
If you have any additional questions, please don't hesitate to reach out.





What's New in SSMS
By reviewmydb
What's New in SSMS
Your daily driver got an overhaul. A full walk through SSMS 21 (the rebuild) then SSMS 22 (race day): GitHub Copilot, Schema Compare, T-SQL formatting, Strict encryption, and more. By Jeff Taylor (@ReviewMyDB).
- 40