Update this document for externally visible changes. Put most recent changes first. Once we push a new version to nuget.org add a double hash header for that version.
- BREAKING: Move Transfer interfaces to Smo.Extended and remove unused/non-implemented interfaces. This is a breaking change that requires recompilation of apps that use Transfer.
- Change base class of
ConnectionException
toException
- Update major package version to 171
- add new database permission alter any external mirror for azure sql database
- Fix bug where creating Microsoft Entra ID logins for Azure SQL database and On Prem databases was disabled
- Upgraded SqlClient to 5.1.2 and removed direct Azure SDK dependencies from the nuget package
- Fix createdrop script error for versioned table in ledger database
- Fix database scoped extended events enumeration on Azure SQL database instances having DATABASE_DEFAULT catalog collation
- Improve scripting of dependency objects in Azure SQL database
- Added
ObjectId
parameter in User and Login create options - Fix
Database.PrefetchObjects
not to throw for SQL version earlier than 2016 - Add ledger support in Database create options for MI in SSMS
- Add
OwnerLoginName
property toJobSchedule
per issue 120 - Fixed the
Database.AvailabilityDatabaseSynchronizationState
property to reflect the correct synchronization state of MI databases in Managed Instance Link
- Add
SearchPropertyList
support for Azure SQL Database
- Fix issue where
Table.Create
andView.Create
were querying the server for indexes - Add option to generate scripts exclusively for Data Classification, Create a new SMO object
SensitivityClassification
underDatabase
- Add support for creating Certificate objects using binary-encoded certificate bytes (#132)
- Fix for incorrect scripting of Database objects targeting SQL Managed Instances
- Fix issue with
Table.Alter
for Synapse - Add initial replication of contained AG system databases to AG creation
- Upgrade VSTest to 17.4.1 to remove workaround for unit test builds
- Fix Databases collection not to login to each database when app asks for
Status
property - Enable datetime masked columns
- Update product display names
- Add database, server, and object permissions for SQL Server 2019 and SQL Server 2022
- Add support for strict encryption and HostNameInCertificate
- Add certificate and asymmetric key user support for Azure DB
- Change the name of the XML file used by SSMS 19 to RegSrvr16.xml
- Change
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
- Add new EXTGOV_OPERATION_GROUP audit action type
- Force QUOTED_IDENTIFIER ON for all tables
- Change Databases enumeration on Azure DB to ignore
sys.databases
entries that don't have an entry insys.database_service_objectives
. Prevents attempted logins to user databases when enumerating databases on the logical master - Update permissions enumeration for SQL Server 2022
- Add SmoMetadataProvider preview package
- Replace netcoreapp3.1 with net6
- First public 170 build on Nuget.org
- Upgrade Microsoft.Data.SqlClient to version 5.0
- Upgrade build tools to VS2022
- Add
LedgerViewSchema
property to table objects - Fix an issue that caused ledger tables with views with different schemas to be scripted improperly
- Added support for
Contained Availability Groups
: new AvailabilityGroup.IsContained and AvailabilityGroup.ReuseSystemDatabases properties and updated Create() method. - Fixed generate scripts test for SQL 2012
- Added automated tests for
JobServer
methods - Marked several
JobServer
methods supporting SQL 2005 and earlier as Obsolete - Marked unused property
JobServerFilter.OldestFirst
as Obsolete - Add
IsDroppedLedgerTable
andIsDroppedLedgerView
properties to table and view objects, respectively - Add
IsDroppedLedgerColumn
properties to column, and updated scripting to not include dropped ledger columns in script creation - Fixed heuristic in Wmi.ManagedComputer to determine the correct WMI namespace to connect to, to workaround a bug where SQL Setup setup does not fully uninstall the SQL WMI Provider.
- Update
ConnectionManager.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 toExecuteSql
during lazy property fetches of SMO objects despite being set toCaptureSql
by the calling application. - Add
LoginType
property toILoginOptions
interface. Login.PasswordPolicyEnforced
now returnsfalse
for Windows logins instead of throwing an exception- Remove net461 binaries from nuget packages
- Added Scripting Support for Ledger tables for SQL 2022+
- Change the
Size
property onServer/Drive
objects toSystem.Int64
. These objects don't have a C# wrapper class so it's not breaking any compilation. - Add support for SQL Server version 16
- Add new permissions for SQL 2019+ to SMO enumerations
- Added External Stream object and External Streaming Jobs object for scripting
- Add support for XML compression
- Handle Dedicated SQL Pool login error 110003 during enumerate of Databases
- Enable asymmetric and symmetric key objects for dedicated SQL Pool database
- Fix Tables enumeration on Azure SQL Database instances using a case sensitive catalog collation
- Fix scripting of hidden columns
- Enable Generate Scripts to script temporal tables when the destination is a pre-2016 version of SQL Server. System versioning DDL will be omitted from the generated script.
- Update Microsoft.Data.SqlClient dependency to version 3.0.0
- Added Scripting Support for Ledger table in Azure SQLDB
- Change
Server.MasterDBPath
andServer.MasterDBLogPath
properties to usefile_id
instead ofname
fromsys.database_files
- Enable Index creation for memory optimized tables in Azure
- Fix Server/Logins to show external Logins for Azure SQLDB as they are now supported
- Split SmoMetadataProvider into its own nuget packages
- Adding support for External Languages
- Add Microsoft.SqlServer.SqlWmiManagement and Microsoft.SqlServer.Management.Smo.Wmi to lib\netcoreapp3.1
- Add missing resource files for netcoreapp3.1 and netstandard2.0
- Fix an issue with scripting Azure Synapse Analytics databases
- Add missing values to AuditActionType enum
- Fixed an issue where AffinityInfo.Alter() may throw an error like
An item with the same key has already been added
when trying to update the AffinityMask of a specific CPU, particularly on machines with Soft-NUMA. - Updated formatting logic of Predicate values in XEvent scripts
- Fix for scripting distributed Availability Groups
- Add support for resumable option on create constraints and low priority wait
- Add descriptions to more Facet properties
- Add net461 binaries due to customer demand. Only core scripting functionality is included in lib\net461
- Make RegisteredServersStore.InitializeLocalRegisteredServersStore public to enable loading and saving registered servers in a custom location
- Fixed an issue where the creation of a DataFile may fail when targeting a SQL Azure Managed Instance
- Fix Database.Checkpoint to always checkpoint the correct database. Issue 32
- Make ISmoScriptWriter interface public
- Enable apps to provide custom ISmoScriptWriter implementation to SqlScriptPublishModel and ScriptMaker
- Enabled Security Policy while GenerateScript/Transfer database.
- Expose EXTERNAL_MONITOR server audit destination for SQL Managed Instance
- Expose OPERATOR_AUDIT server audit option for SQL Managed Instance
- Change association of DatabaseEngineEdition.SqlOnDemand to DatabaseEngineType.SqlAzureDatabase
- Fix implementation of Microsoft.SqlServer.Management.HadrModel.FailoverTask.Perform to handle AvailabilityGroupClusterType.None correctly
- Add netcoreapp3.1 build output
- Fix logins using impersonation
- Expose OlapConnectionInfo class in non-netfx ConnectionInfo
- Expose WmiMgmtScopeConnection in non-netfx ConnectionInfo
- Add Accelerated Database Recovery support - #22
- Enable Column.BindDefault on Azure SQL Database
- Add DestinationServerConnection property to Transfer
- Github issue 16
- Allows for use of Azure SQL Database as a destination server
- Enables full customization of the destination connection
- Script User objects for Azure SQL Database correctly
- Enable CreateOrAlter behavior for Scripter
- Fixed issue where MaxSize value was reported as negative for Hyperscale Azure SQL Databases - Added new property "IsMaxSizeApplicable" and disabled negative values for Hyperscale Azure SQL Databases.
- 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 an outage and block expansion of the Databases node in SSMS.
- Add support for Workload Management Workload Classifiers.
- Add support for Workload Management Workload Groups.
- Handle SQL error code 4060 during fetch of Database.DatabaseEngineEdition and use default value of Unknown
- Update Microsoft.Data.SqlClient dependency to version 2.0.0
- Update the Nuget package major version to 161 to reflect the shift to Microsoft.Data.SqlClient for NetFx
- Fixed Database.Size property to report the accurate size of the database when DatabaseEngineType is SqlAzureDatabase
- Fixed issue where Database.SpaceAvailable was reported as negative for Hyperscale Azure SQL Databases (the value is reported as 0, meaning Not applicable)
- Implement IObjectPermission on DatabaseScopedCredential. #14
- Enabled Server.EnumServerAttributes API on Azure SQL Database
- Enabled Lock enumeration APIs on Azure SQL Database
- Deleted the Database.CheckIdentityValues API
- Added new property "RequestMaximumMemoryGrantPercentageAsDouble" in WorkloadGroup to accept decimal values in Resource Governor (SQL 2019+).
- Changed the netfx binaries in Microsoft.SqlServer.SqlManagementObjects package to use Microsoft.Data.SqlClient
- Added a new package, Microsoft.SqlServer.SqlManagementObjects.SSMS, which only has netfx binaries and that uses System.Data.SqlClient
- Fixed a scripting issue with statistics on filtered indexes where the filter from the index would be scripted with the UPDATE STATISTICS TSQL.
-
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()
- Fixed the "like" and "contains" URN filter functions to work with parameters containing single quotes. These operators can be used to optimally initialize collections:
// 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[] { });
- Make Table.Location property optional for creating or scripting external tables.
- Enable scripting of ANSI_PADDING settings for Azure SQL Database tables.
- Remove obsolete types ServerActiveDirectory and DatabaseActiveDirectory