On 22 November, 2012 12:30:38,
by Dirk Strauss
Recently I had an issue where a Web Application stopped working when a SQL Server Migration took place. The SQL Server was moved to a new physical server, but in addition to that they upgraded SQL Server from 2005 to 2008 R2. The problem turned out to be the SMO references in the source code. All applications written referencing previous versions of SMO need to be changed to reference the new SMO DLL’s.
As a minimum, you would need to add the following which are required for connection classes, SMO utility classes, and foundation classes:
According to Microsoft, the SmoEnum.dll has been removed and some namespaces have changed. You will need to include the following:
In Visual C#
Lastly, if your application uses the Urn functionality (for example Server.GetSqlSmoObject(Urn)) you will need to link to the Microsoft.SqlServer.Management.Sdk.Sfc namespace. If you use the Transfer object directly, you need to link to the Microsoft.SqlServer.Management.SmoExtended namespace. (Example of the Transfer object)
//Define a Transfer object and set the required options and properties.
xfr = new Transfer(db);
xfr.CopyAllTables = true;
xfr.Options.WithDependencies = true;
xfr.Options.ContinueScriptingOnError = true;
xfr.DestinationDatabase = "AdventureWorks2012Copy";
xfr.DestinationServer = srv.Name;
xfr.DestinationLoginSecure = true;
xfr.CopySchema = true;
//Script the transfer. Alternatively perform immediate data transfer
// with TransferData method.
Expect some code changes when you migrate code. The reason for this is that some features have been depreciated in the new DLL’s.
Dirk is a Software Developer and Microsoft MVP from South Africa. He loves all things Technology and is slightly addicted to Twitter and Jimi Hendrix. Apart from writing code, he also enjoys writing human readable articles. "I love sharing knowledge and connecting with people from around the world. It's the diversity that makes life so beautiful." Dirk feels very strongly that pizza is simply not complete without Tabasco, that you can never have too much garlic, and that cooking the perfect steak is an art he has yet to master.