NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #1151 most downloaded on NuGet
The SQL Server Management Objects (SMO) Framework is a set of objects designed for programmatic management of Microsoft SQL Server and Microsoft Azure SQL Database.
Last release 9 days ago
30 Sep 2026
Release timing varies
gaps range from 2 weeks to 5 months
Some releases are documented
notes for 26 of 47 stable releases
8 versions withdrawn
withdrawn after publishing
127 years old
81 releases · first in 1900
Add ServerConnection.Edition and ServerConnection.EditionID to expose the values of SERVERPROPERTY('Edition') and SERVERPROPERTY('EditionID').
ServerConnection.Edition and ServerConnection.EditionID to expose the values of SERVERPROPERTY('Edition') and SERVERPROPERTY('EditionID').ConnectAsUser open under the specified Windows identity.SoapFormatter-based exception serialization from SqlClrProvider.HelpLink URL to only include LinkId. SqlServerManagementException now exposes a virtual HelpLinkId property for feature-area-specific help pages.Fix default value for QueryStoreOptions CapturePolicyStaleThresholdInHrs to be 24
Server.IsLocalDB to report whether the connected SQL Server instance is LocalDB.Server.Information.RootDirectory as an expensive property so it is no longer included in the bulk fetch of Server.Information properties.IReadOnlyCollection, IReadOnlyCollection<T>, IReadOnlyList<T>, IReadOnlyDictionary<K,T>, IReadOnlySet, IReadOnlySet<T>) and their ReadOnlyList<T> / ReadOnlyDictionary<TKey,TValue> implementations from Microsoft.SqlServer.Management.Sdk.Sfc, since they collided with the BCL System.Collections.Generic types and were not used.DatabaseRole.EnumDirectMembers() which returns only the direct members of the role.InitializeAsync() - asynchronously fetch default propertiesInitializeAsync(string[] fields) - asynchronously fetch specific propertiesRefreshAsync() - asynchronously refresh all propertiesHasCompressedPartitions / HasXmlCompressedPartitions are requested by pre-aggregating sys.partitions into a temp table once per query, replacing per-row correlated MAX() subqueries that scanned sys.partitions multiple times.Index.HasXmlCompressedPartitions on Azure SQL Database (previously available only on SQL Server 2022+).One column per quarter.
Add .NET 10.0 target framework support to SMO NuGet packages
Migrate string resources from legacy .strings files to standard .resx files using ResxSourceGenerator
Fix bug when scripting ALTER USER for Windows Group users
Remove SQL Server 2005 and prior version support:
DataReader.GetString to retrieve formatted vector data for INSERT script generationChange SMO collections to implement IEnumerator
Nothing published for this version
Use vector_dimensions instead of max_length for Vector columns
- Fix scripting performance #165
Add DesignMode support to QueryStoreOptions class
QueryStoreOptions classRemove major version restriction on Microsoft.Data.SqlClient dependency Fixes Issue 188
Database.PrefetchObjects to omit ExtendedProperties when passed a ScriptingOptions object that omits them. Fixes Issue 177Nothing published for this version
…different time zones. CreateDate is essentially deprecated, and new applications should start using DateLastModified instead.
ServerRole support for Azure SQL databaseCREATE and ALTER scripts for external data sourcesDateLastModified property on Error Logs returned by EnumErrorLogs(). Its value is the same as the existing CreateDate,
(which has been incorrectly namd for years) only properly stampted with the date/time offset information to allow easier
interoperability between client and servers in different time zones. CreateDate is essentially deprecated, and new applications
should start using DateLastModified instead.EnumErrorLogs() where CreateDate field could be NULL depending on the configuration of the machine
on which SQL Server was running on.BREAKING : Move Transfer interfaces to Smo.Extended and remove unused/non-implemented interfaces. This is a breaking change that requires recompilatio…
ConnectionException to ExceptionFix bug where creating Microsoft Entra ID logins for Azure SQL database and On Prem databases was disabled
ObjectId parameter in User and Login create optionsDatabase.PrefetchObjects not to throw for SQL version earlier than 2016OwnerLoginName property to JobSchedule per issue 120Database.AvailabilityDatabaseSynchronizationState property to reflect the correct synchronization state of MI databases in Managed Instance LinkNothing published for this version
Add SearchPropertyList support for Azure SQL Database
SearchPropertyList support for Azure SQL DatabaseTable.Create and View.Create were querying the server for indexesSensitivityClassification under DatabaseFix issue with Table.Alter for Synapse
Table.Alter for SynapseStatus propertyAdd certificate and asymmetric key user support for Azure DB
SetDefaultInitFields to allow inclusion of properties unsupported by the connected SQL edition.Fix distribution columns on scripting for taking into consideration more than one distribution column
sys.databases entries that don't have an entry in sys.database_service_objectives. Prevents attempted logins to user databases when enumerating databases on the logical masterNothing published for this version
Nothing published for this version
Nothing published for this version
First public 170 build on Nuget.org
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add LedgerViewSchema property to table objects
LedgerViewSchema property to table objectsContained Availability Groups: new AvailabilityGroup.IsContained and AvailabilityGroup.ReuseSystemDatabases properties and updated Create() method.JobServer methodsJobServer methods supporting SQL 2005 and earlier as ObsoleteJobServerFilter.OldestFirst as ObsoleteIsDroppedLedgerTable and IsDroppedLedgerView properties to table and view objects, respectivelyIsDroppedLedgerColumn properties to column, and updated scripting to not include dropped ledger columns in script creationConnectionManager.InternalConnect to retry connection in response to error 42109 (serverless instance is waking up)Fix an issue that caused ServerConnection.SqlExecutionModes property to be set to ExecuteSql during lazy property fetches of SMO objects despite being
ServerConnection.SqlExecutionModes property to be set to ExecuteSql during lazy property fetches of SMO objects despite being set to CaptureSql by the calling application.LoginType property to ILoginOptions interface.Login.PasswordPolicyEnforced now returns false for Windows logins instead of throwing an exceptionSize property on Server/Drive objects to System.Int64. These objects don't have a C# wrapper class so it's not breaking any compilation.Handle Dedicated SQL Pool login error 110003 during enumerate of Databases
Update Microsoft.Data.SqlClient dependency to version 3.0.0
Server.MasterDBPath and Server.MasterDBLogPath properties to use file_id instead of name from sys.database_filesNothing published for this version
Add descriptions to more Facet properties
Make ISmoScriptWriter interface public
Nothing published for this version
Nothing published for this version
Put begin try/begin catch around TSQL querying sys.database_service_objectives in Azure SQL Database. This view may throw if Azure control plane has a
Nothing published for this version
First non-preview 160 release, aligned with SQL Server Management Studio 18.5
First non-preview 160 release, aligned with SQL Server Management Studio 18.5
Script extended properties for Azure SQL Database objects
Enable Jupyter Notebook output for SqlScriptPublishModel. SSMS 18.5 can output a Notebook for Azure Data Studio in Generate Scripts now.
Fix issue where Table.EnableAllIndexes(Recreate) did nothing
Fix Database.EnumObjectPermissions usage in NetStandard binaries
Enabled Security Policy and Security Predicate objects on Azure SQL DataWarehouse
Enabled Text property for StoredProcedure on Azure SQL Database
Enabled Database.GetTransactionCount and Database.EnumTransactions on Azure SQL Database
Added CMK and CEK scripts to "Generating scripts for all database objects" option in SSMS.
Changed the order of the scripts in SmoUrnFilter.cs to script out the CMK and CEK Scripts before Tables.
Transferdata unit test cases were failing due to the "USE" statement in the Create Query for CMK and CEK Scripts. Removed "USE" statement
Updated Transfer/ScriptingBaselines Xml's with the CMK and CEK Scripts for all the versions which supports CMK's and CEK's (2016 and later)
Updated the ColumnMasterkey.baseline.xml's and ColumnEncryptionKey.baseline.xml's for the versions which supports these keys (Removed USE statement in the create query).
Enabled support for Column.IsMasked and Column.MaskingFunction for DataWarehouse
Remove FORCE ORDER hint from table enumeration that was causing major performance issues
Fix Transfer with PrefetchAllObjects == false for pre-SQL 2014 versions so it doesn't throw an exception
Added BLOB_STORAGE scripting support for external data sources
Fixed error scripting external tables for Azure SQL Database
Replace Microsoft.SqlServer.Management.SqlParser.dll with a dependency to its Nuget package
Fixed SMO Column's sensitivity attribute drop failed when attribute is empty
Remove unneeded "using" TSQL statements from Database.CheckTables method implementations
Enable ColumnMasterKey properties Signature and AllowEnclaveComputations for Azure SQL DB
Fix Database.EncryptionEnabled and Database.DatabaseEncryptionKey behavior during Database.Alter(). Now, this code will correctly create a new key using the server certificate named MyCertificate:
db.EncryptionEnabled = true;
db.DatabaseEncryptionKey.EncryptorName = "MyCertificate";
db.DatabaseEncryptionKey.EncryptionAlgorithm = DatabaseEncryptionAlgorithm.Aes256;
db.DatabaseEncryptionKey.EncryptionType = DatabaseEncryptionType.ServerCertificate;
db.Alter()
// populate the collection with databases that have Name starting with "RDA"
var server = Server(new ServerConnection(sqlConnection));
server.Databases.ClearAndInitialize("[like(@Name, 'RDA%')]", new string[] { });
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →