The best free SQL Server tools cover a few jobs well and make their behavior understandable. Start with supported clients and built-in diagnostics before adding another utility to every machine.

Keep Administration in SSMS
SQL Server Management Studio is the practical Windows starting point for broad administration. It combines query editing with object management, execution plans, Agent administration, and many diagnostic interfaces. Install it on an administration workstation when that fits your access model.
A free client does not make the connected database engine free for every use. Licensing and edition restrictions belong to the server product. Keep that distinction clear when building a lab or supporting production.
SELECT @@SERVERNAME AS server_name,
SERVERPROPERTY('ProductVersion') AS product_version,
SERVERPROPERTY('Edition') AS edition,
DB_NAME() AS database_name;Use a short identity query like this before running an unfamiliar script. Color-coded connections can help, but explicit confirmation is stronger. A powerful administration interface deserves deliberate connection habits.
Use an Editor That Matches the Work
Visual Studio Code with the MSSQL extension is a supported option for query and database-development work. It is useful when SQL editing belongs alongside application files. SSMS remains the broader choice for many administration tasks.
Azure Data Studio retired on February 28, 2026 and no longer receives updates or security fixes. Do not recommend it as a fresh long-term installation based on an old tools list. Check the current supported replacement for the feature you actually need.
Extensions and optional services can have separate terms, accounts, or costs. Review what a feature sends outside your environment before enabling it. The editor's base price does not describe every connected capability.
Use Sqlcmd for Repeatable Command Execution
Sqlcmd runs T-SQL from files and command-line workflows. It is useful for scheduled checks and repeatable administrative tasks. Keep the installed implementation and version documented because available options can differ.
A script should produce clear success or failure and avoid exposing credentials in command history. Use an approved authentication method and error-handling options for the chosen client. A scheduler needs a reliable exit status, not just a text file containing an error.
SET NOCOUNT ON;
SELECT SYSUTCDATETIME() AS checked_at_utc,
@@SERVERNAME AS server_name;
IF EXISTS (SELECT 1 FROM sys.databases WHERE state_desc <> N'ONLINE')
THROW 50020, 'One or more databases are not online. Review the expected state.', 1;This small script illustrates an explicit failure signal. Adapt the database scope because an intentionally offline database may be acceptable. A useful automated check reflects your operational policy rather than a universal assumption.
Use Extended Events for Focused Capture
Extended Events is built into the engine and supports targeted event collection. Use it when a transient event disappears before a polling query can see it. Choose the event, predicate, actions, and retention deliberately.
SELECT name, event_retention_mode_desc, max_memory,
startup_state
FROM sys.server_event_sessions;
SELECT name, create_time
FROM sys.dm_xe_sessions;The first query lists defined server sessions, while the second lists running sessions. Database-scoped sessions require the corresponding database views. A defined session is not proof that it is collecting.
Lightweight does not mean unlimited collection is free of overhead. Broad events, expensive actions, and excessive retention can create real work and expose sensitive text. Test a narrow capture before leaving it active.
Use Built-In History Before Adding More Software
Query Store, error logs, Agent history, and Windows Performance Monitor already answer many common questions. Learn their scopes and retention limits. A missing record may mean collection was disabled or history expired.
SELECT actual_state_desc, desired_state_desc,
current_storage_size_mb, max_storage_size_mb,
query_capture_mode_desc
FROM sys.database_query_store_options;Run this in the database you are investigating. Query Store's configuration affects which history is available. It is not a record of every application event or every parameter value.
Community scripts can add useful focused diagnostics, but read their code and supported-version notes first. Understand whether they only observe or also change settings. A familiar name is not a substitute for reviewing the exact file you run.
Count Maintenance as Part of the Cost
Free utilities still require patching, access review, testing, and someone who understands the output. Install fewer tools when their responsibilities overlap heavily. Keep a short inventory with purpose, version, and owner.
A commercial tool may justify its cost through support, retention, or team workflow. Decide from the problem being solved rather than the price label alone. The most useful tool is one your team can operate confidently when the server is having a bad day.
A useful toolkit is not a large collection, it is a small set of understood capabilities.
This post was rewritten from scratch in September 2026. The original, published on 2013-12-18, was a short announcement about something that no longer exists. The address is the same, the subject is now something worth keeping.
Published by Pinal Dave on SQLAuthority. More of my work at pinaldave.com.





7 Comments. Leave new
I love the functionality in ApexSQL Complete, but even the latest version causes my SSMS (2012) to crash several times per day and I just can’t live with that so I have to uninstall it. Every few months I try the latest version, but get the same result.
Yes, I liked ApexSQL Complete functionality, but constant crashes on SSMS 2012 forced me to uninstall. I use dbForge SQL Complete and SSMSBoost.
I haven’t had crashing issues in SSMS 2014. Used it for about a week. It does occasionally freeze up for one or two seconds when it’s building the completion list. Quite annoying but well worth the wait. The helpers for joins are quite wonderful.
Hi
I’ve been using the latest versions of ApexSQL Complete for a year or more, it constantly crashes SSMS if it can’t find the connected database. We drop and recreate databases all the time and also connect to remote databases via VPN that we start and stop as required. If ApexSQL Complete can’t find the database it wants, it just crashes and brings SSMS and all your unsaved work with it. I have to use SSMS Tools to ensure I can get my work back.
I’ve notified ApexSQL of the issues and supplied them with my log files in the past, but the crashes continue to plague me. I would be okay if the ApexSQL Complete plug-in just crashed, but why it has to kill SSMS as well just baffles me.
Cheers
Craig
Hi,
We in ApexSQL are fully aware of the issue and we fixed it for our next release. To get the pre-release please send an email to support@apexsql.com. We’ll be glad to send you a link
You can also connect with me on Twitter to get updates on ApexSQL tools – @SQL_MiM
Thanks
Hello Dave,
it would be nice if you give a chance to SSMSBoost project. You have mentioned it on twitter 1.5 years ago, maybe it’s time now for a blog post ;) We have currently reached 6500 users, using free version. I can support you with any information you need. Your posts look pretty independent, so I hope there will be a place for us as well. For any questions you can get in touch with me.
Sincerely yours,
Andrei
Hi,
The release of ApexSQL Complete R4 with a fix for SSMS crashing issue, and 50% better performance is out
You can download individual installer from our download page
For any issues feel free to contact ApexSQL directly on support@apexsql.com
Thanks