Deploy databázy cez DACFramework, Drop databázby cez SMO, SQL 2012

V rámci večerných hrátok som potreboval z kódu deploynúť programovo databázu resp. DAC balíček na SQL 2012. Trošku som sa potrápil, keďže všetko čo som našiel sa týkalo staršej verzie DACFrameworku a SMO a už som sem dávno ničím neprispel, tak dobrá zámienka :-)

Potrebujeme si nareferencovať DACFramework.dll (Plná inštalácia SQL Server 2012 Express) a dll nájdete tu:

c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Microsoft.SqlServer.Dac.dll

using Microsoft.SqlServer.Dac;

//drop povodnej db, vytvorenie novej
var options= new DacDeployOptions { CreateNewDatabase= true };

using(DacPackage package= DacPackage.Load(dacpacPath))
{
    var services = new DacServices(connString);
    //volitelne parametre su zlo
    services.Deploy(package, "CatalogName", options: options);
}

A k tomu este Drop cez SMO. Potrebujeme referencovat Microsoft.SqlServer.Smo.dll, ktorá sa nachádza v SDK foldri.

c:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.Smo.Dll

postupne si budeme musieť nareferencovať aj ďalšie dll z toho istého foldra, takže to môžeme urobiť hneď:

Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll

using Microsoft.SqlServer.Management.Smo;
var server = new Server(".\SQLExpress");
server.KillDatabase("CatalogName");

Príkaz zhodí aj všetky aktívne pripojenia, ktoré by mohli blokovať drop.

Komentáre

Bez komentárov

Prihlásiť | Registrovať | Pomoc