Backward Compatibility in SMO

SMO applications that were written in SQL Server 2005 or SQL Server 2008 can be recompiled by using SMO in SQL Server 2008 R2.

References to SMO dlls in SQL Server 2005 or SQL Server 2008 must be removed, and references to the new SMO dlls that are provided with SQL Server 2008 R2 must be included.

Minimally, you would reference the following:

  • Microsoft.SqlServer.ConnectionInfo

  • Microsoft.SqlServer.Smo

  • Microsoft.SqlServer.Management.Sdk.Sfc

These files are required for connection classes, SMO utility classes, and foundation classes.


SmoEnum.dll has been removed so references to it must be removed from the SMO SQL Server 2008 R2 project.

The namespaces have also changed, so you can use the following:

For Visual C#

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

For Visual Basic

Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common

If your code uses Urn functionality, such as Server.GetSqlSmoObject(Urn), you must link to the Microsoft.SqlServer.Management.Sdk.Sfc namespace.

If your code uses the Transfer object directly, you will have to link to the Microsoft.SqlServer.Management.SmoExtended namespace.

When you migrate code, you might have to modify the code. This is because several SQL Server 2005 and SQL Server 2008 features have been deprecated in SQL Server 2008 R2. For more information about deprecated features, see Deprecated Database Engine Features in SQL Server 2008 R2 in SQL Server 2008 R2 Books Online.

Community Additions