Ponieważ SMO jest warstwą wykorzystywaną także przez SQL Server Management Studio, to praktycznie wszystkie rzeczy jakie można zrobić korzystając z SSMS można też wykonać korzystając z SMO.
Poniższy przykład ilustruje jak utworzyć bazę danych zmieniając jej ustawienia domyślne. Zaczynamy od załadowania SMO i podłączenia się do określonej instancji SQL
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")
$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server localhost
Oto jeden z najważniejszych momentów. Tworzymy obiekt bazy. Właściwie kolejną instrukcją mogłoby być $db.Create(), ale wtedy baza przyjęłą by wszystkie wartości domyślne
$db = New-Object Microsoft.SqlServer.management.Smo.Database($sqlserver,’MyTest’)
Teraz tworzymy obiekt ‘FileGroup’. Ten obiekt należy dołączyć do kolekcji FileGroups bazy danych
$fileGroup = New-Object Microsoft.SqlServer.Management.Smo.Filegroup($db,’PRIMARY’)
$db.FileGroups.Add($fileGroup)
Następny krok to utworzenie pliku danych. Dodatkowo zmieniamy jeszcze rozmiar i lokalizację pliku. Liczba definiująca rozmiar zostanie podczas tworzenia bazy zinterpretowana jako ilość kilobajtów, czyli tu tworzymy bazę o rozmiarze 5MB. Tak przygotowany obiekt pliku należy na końcu dodać do obiektu FileGroup do kolekcji Files
$dataFile = New-Object Microsoft.SqlServer.Management.Smo.DataFile($fileGroup,’MyTest_data’)
$dataFile.FileName = ‘c:\temp\MyTest_data.mdf’
$dataFile.Size = 5*1024
$fileGroup.Files.Add($dataFile)
Podobnie postępujemy z plikiem log, który jednak dodajemy do kolekcji logfiles obiektu bazy danych (pliki log nie są dzielone na grupy plików)
$logFile = New-Object Microsoft.SqlServer.Management.Smo.LogFile($db, ’MyTest_log’)
$logFile.FileName = ‘c:\temp\MyTest_log.ldf’
$logFile.Size=2*1024
$db.LogFiles.Add($logFile)
Na tym etapie można sprawdzić jakie polecenie zostanie wykorzystane do utworzenia bazy danych:
$db.Script()
Teraz pozostaje utworzyć bazę…
$db.Create()
… a kiedy nie będzie już potrzebna można ją równie prosto usunąć:
$db.Drop()