Powershell i SQL 17 – to samo na 2 sposoby

2016-11-06

Backup z SMO

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum")
$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server 'localhost'
$backup = New-Object Microsoft.SQLServer.Management.Smo.Backup
$backup.Database = "master"
$backup.Devices.AddDevice('c:\temp\master.bak',[Microsoft.SqlServer.Management.Smo.DeviceType]::File)
$backup.Action = [Microsoft.SqlServer.Management.Smo.BackupActionType]::Database
$backup.SqlBackup($SqlServer)

Backup z cmdlet Backup-SqlDatabase

Dalej zakładam, że odpowiedznie biblioteki są już załadowane
Import-Module sqlps
Backup-SqlDatabase -ServerInstance localhost -Database "master" `
-BackupAction Database -BackupFile c:\temp\master.bak

Czytaj dalej »

Powershell i SQL 16 – wykrywanie instancji w sieci

2016-11-05

Teraz pora na funkcję, która nie należy do SMO ale do .NET! Funkcja ta ma najczęściej za zadanie pomóc użytkownikowi odnaleźć SQL  server znajdujący się gdzieś w sieci, kiedy użytkownik nie zna jego nazwy, ale raczej wolałby wybrać serwer z listy dostępnych w danej chwili instancji SQL.

Ta funkcja to:

([System.Data.Sql.SqlDataSourceEnumerator]::Instance).GetDataSources()

EnumerateSQLInstances

Świetnie! Mając taką informację jesteśmy o krok od skryptu, który spróbuje wykryć serwery SQL dostępne w sieci i odpytać je o szczegóły wersji, która jest tam zainstalowana: Czytaj dalej »

Powershell i SQL 15 – trochę teorii o SMO

2016-11-05

SMO (SQL Management Object) to biblioteki .NET pozwalające na pracę z SQL server. Ponieważ PowerShell świetnie integruje się z .NET, to jednym ze sposobów pracy z SQL jest właśnie SMO. Mając do dyspozycji również SQL Provider administratorzy zapewne chętniej wybiorą pracę z modułem SQLPS, jednak dla programistów SMO może być dość ciekawe…

Na stronie https://msdn.microsoft.com/en-us/library/ms162209.aspx znajduje się diagram pozwalający zorientować się, w strukturze obiektów opisujących SQL. Na diagramiemożna zobaczyć elementy w kolorze pomarańczowym (są to kolekcje obiektów) oraz niebieskie (są to opisy klas/obiektów). W poniższym screenshot widać że na serwerze znajduje się kolekcja DatabaseCollection. Obiekty znajdujące się w tej kolekcji to obiekty typu Database. Obiekt Database jest z kolei zbudowany z następnych właściwości, a te czasami są następnymi kolekcjami:

smo-diagram Czytaj dalej »

Powershell i SQL 14 – Tworzenie bazy danych z wykorzystaniem SMO

2016-11-05

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)

Czytaj dalej »

Powershell i SQL 13 – Invoke-SqlCmd

2016-11-05

Polecenia dostępne w  module pssql pozwalają na administracji High Avaialbility, Azure, zarzadzanie backupami oraz na wykonywanie ogólnych zadań związanych po prostu z SQL. Na początku właśnie te dwie ostatnie grupy są najbardziej interesujące.

Chyba najbardziej uniwersalnym poleceniem jest Invoke-Sqlcmd. Polecenie pozwala uruchamiać zarówno polecenia przekazywane jako tekst ale również może uruchamiać skrypty znajdujące się w pliku. Polecenia mogą być uruchamiane na dowolnej instancji SQL ponieważ mamy do dyspozycji parametr ServerInstance. W poniższym przykładzie wyświetlone zostaną loginy SQL wraz z informacją czy mają włączoną opcję dotyczące zgodności z polityką haseł oraz opcję wygasania hasła:

IC-01 Czytaj dalej »

SSRS: Jak zaznaczyć wszystkie wartości domyślne w Multivalue Parameter?

2016-11-04

Dany jest parametr, który w raporcie ma być zaprezentowany w następujący sposób:

result

Chcemy, żeby w moemncie wyświetlenia raportu wszystkie wartości zostały zaznaczone.

Zacząłem od zdefiniowania pomocniczego data setu: Czytaj dalej »

By Rafał Kraik in SSRS

Powershell i SQL 12 – korzystanie z napędu SQLSERVER:\

2016-11-04

Po załadowaniu modułu w systemie pojawił się nowy provider pozwalający na uzyskiwanie dostępu do obiektów bazodanowych tak jakby były one folderami i plikami w specjalnym systemie plików. Obecność providera oraz wirtualnego dysku można sprawdzić poleceniami Get-PSProvider oraz Get-PSDrive:

provider

Po przejściu poleceniem cd na nowy dysk sqlserver:\ można wydawać normalne polecenia jak ls czy cd pozwalające przechodzić przez strukturę sqlserver: Czytaj dalej »