Akademia SQL - Część 12: Nowości w T-SQL     Akademia SQL     Akademia SQL - Część 14: Studio monitoringu

Akademia SQL - Część 13: Konsola PowerShell Udostępnij na: Facebook

Autor: Damian Widera

Opublikowano: 20 stycznia 2009

Zawartość strony
Konsola PowerShell – informacje podstawowe   Konsola PowerShell – informacje podstawowe
 Konsola PowerShell – laboratorium   Konsola PowerShell – laboratorium
 Konsola PowerShell – referencje   Konsola PowerShell – referencje

Konsola PowerShell – informacje podstawowe

Serwer SQL 2008 wspiera najnowszą powłokę i jezyk skryptowy —  Microsoft PowerShell. PowerShell znalazł się wśród produktów spełniających kryteria CEC (ang. Common Engineering Criteria). Oznacza to, że obecne i przyszłe produkty firmy Microsoft będą wspierały jezyk PowerShell, co umożliwi administrowanie za pomoca jednego środowiska skryptowego nie tylko systemami operacyjnymi Windows, ale rowniez innymi systemami serwerowymi, takimi jak serwery pocztowe Exchange czy serwery SQL.

PowerShell jest zintegrowany ze środowiskiem .NET Framework. Konsola PowerShell jest to rozszerzoną konsolą linii poleceń, w której użytkownik wywołuje komendy (ang. cmdlet) bądące funkcjami napisanymi przy użyciu bibliotek .NET. Komendy PowerShell składają się z dwóch członów — z czasownika i rzeczownika, które są oddzielone myślnikiem. Czasownik określa akcję, która zostanie wykonana na obiekcie opisywanym przez rzeczownik. Przykładem może być komenda Get-Help , która służy do uzyskania pomocy na temat innej, wybranej komendy. Dla ułatwienia, niektórym komendom przypisano aliasy— skróty, które pozwalają na zapisywanie bardziej złożonych komend w skróconej formie, np. wspomniana komenda Get-Help ma alias help .    

Wraz z serwerem SQL 2008 instalowana jest konsola PowerShell — program sqlps.exe. Uruchomienie programu sqlps.exe powoduje rozpoczęcie sesji, w której oprócz standardowych komend dostępne są także komendy dedykowane do pracy z serwerem SQL 2008. Administrator może zatem poruszać się po obiektach serwera SQL w taki sam sposób, w jaki użytkownicy poruszają się po katalogach w systemie plików.

W konsoli PowerShell można korzystać z klas pochodzących z bibliotek SMO (ang. SQL Management Objects ) bez konieczności ich wcześniejszego rejestrowania. Użytkownik może zatem wykonywać operacje na bazach danych oraz ich obiektach, np. dokonywać zmian ustawień instancji serwera SQL.

Język PowerShell pozwala na budowanie skryptów, których logika jest dużo bardziej złożona niż logika skryptów T-SQL. PowerShell, oprócz komend, pozwala wykorzystywać także instrukcje sterujące czy pętle. Poza tym w PowerShell użytkownik może operować potokami (ang. pipe), czyli wykonywać wiele komend logicznie ze sobą powiązanych.

Daje to ogromne możliwości administratorom wykorzystującym go do automatyzacji codziennych zadań, którzy przy pomocy języka PowerShell mogą tworzyć zaawansowane skrypty pozwalające zaoszczędzić czas potrzebny do wykonywania zadań administracyjnych:

a) Wykonywanie kopii zapasowych wszystkich lub wybranych baz danych

b) Tworzenie, manipulowanie i usuwanie obiektów instancji serwera SQL, takich jak bazy danych, tablice, wyzwalacze, itp.

c) Zmiana właściwości baz danych

d) Skryptowanie

e) Weryfikowanie polityk zarządzania serwerem (na temat mechanizmu Policy-Based Management została opracowana osobna lekcja)

Dodatkowo istnieje także mozliwość wykorzystanie skryptów PowerShell w usłudze Agent. Aby wspomóc procesy automatyzacji zadań administracyjnych, w serwerze SQL 2008 dodany został nowy rodzaj kroku zadań usługi Agent. Pozwala to na cykliczne uruchamianie skryptów PowerShell używanych do wykonywania czynności administracyjnych.

 Do początku strony Do początku strony

Konsola PowerShell – laboratorium

Celem laboratorium będzie zaprezentowanie możliwości oferowanych przez konsolę  PowerShell dostępną z poziomu konsoli SSMS.

1.   Uruchom konsolę SQL Server Management Studio (SSMS) i połącz się z serwerem EVALUATION używając uwierzytelnienia WINDOWS

2.   W oknie eksploratora obiektów przejdź do sekcji Databases, wybierz bazę danych AdventureWorks2008 i z menu kontekstowego wybierz opcję Start Powershell

3.   Po otwarciu konsoli PowerShell, która zawiera dedykowanych dla serwera SQL dostawców, wylistuj za pomocą komendy gdr listę dostępnych napędów. Zwróć uwagę, że na liście napędów można odnaleźć SQLSERVER oraz inne, które nie są fizycznymi napędami w systemie, np. Alias , cert czy inne.

4.   W konsoli wpisz polecenie CD SQLSERVER:\, co pozwoli na rozpoczęcie pracy z serwerem SQL z poziomu konsoli PowerShell

5.   Użyj polecenia dir aby wyświetlić listę elementów serwera SQL, które mogą być obsługiwane za pomocą skryptowego języka PowerShell:

Są to:

  • Silnik baz danych (SQLSERVER:\SQL).
  • Polityki zarządzania serwerami (SQLSERVER:\SQLPolicy).
  • Rejestracja instancji serwera SQL (SQLSERVER:\SQLRegistration).
  • Kolekcje danych pochodzących z monitorowania wydajności (SQLSERVER:\DataCollection).

6.   Przejdź do ścieżki SQLSERVER:\SQL używając polecenia cd . Za pomocą komendy dir możesz sprawdzić, jaka jest nazwa serwera, na którym aktualnie pracujesz:

7.   Teraz możesz sprawdzić, jakie instancje serwera SQL zainstalowane są na serwerze:

8.   Połącz się z instancją domyślną (DEFAULT) i ponownie używając polecenia dir wyświetl listę dostępnych folderów.

9.   Przejdź do folderu Databases i wyświetl listę wszystkich dostępnych baz danych. Zwróć uwagę, że tym razem do zmiany folder użyto komendy Set-Location , która posiada alias cd :

10.   Analogicznie można przechodzić, nawigować po wszystkich obiektach, które są dostępne wewnątrz wybranej bazy danych. Możesz także bezpośrednio połączyć się z

11.   Przy pomocy konsoli PowerShell można zmieniać opcje bazy danych, podobnie jak używając kodu T-SQL czy konsoli SSMS. Najpierw — używając komendy Get-Item należy uzyskać referencję do wybranej bazy danych:

$db = Get-Item

                SQLSERVER:\SQL\NETSOFT-DW\DEFAULT\Databases\AdventureWorks2008

12.   Teraz, korzystając ze zmiennej $db możesz zmieniać opcje bazy danych, jak pokazano na poniższym przykładzie. Należy pamiętać, że opcje zostaną zmienione dopiero po wywołaniu metody Alter dla bazy danych.

$db.BrokerEnabled =

                "True"

                $db.AutoShrink =

                "True"

                $db.Alter()

13.   Prawie każdy obiekt z biblioteki SMO posiada zaimplementowaną metodę Script , która pozwala  na zeskryptowanie obiektu. Korzystając z referencji do bazy danych AdwentureWorks2008 możesz sprawdzić, jak wygląda działanie metody Script :

$db.Script()

                CREATE DATABASE

                [AdventureWorks2008] ON  PRIMARY

                ( NAME =

                N'AdventureWorks2008_Data'

                , FILENAME =

                N'C:\Program Files\Microsoft SQL

                Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorks2008.mdf'

                , SIZE = 200640KB

                , MAXSIZE =

                UNLIMITED

                , FILEGROWTH =

                16384KB ),

                FILEGROUP

                [DocumentFileStreamGroup] CONTAINS FILESTREAM  DEFAULT

                ( NAME =

                N'FileStreamDocuments', FILENAME = N'C:\Program Files\Microsoft SQL

                Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Documents' )

                LOG ON

                ( NAME =

                N'AdventureWorks2008_Log', FILENAME = N'C:\Program Files\Microsoft SQL

                Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorks2008.ldf'

                , SIZE = 2048KB

                , MAXSIZE = 2048GB

                , FILEGROWTH =

                16384KB )

                COLLATE

                SQL_Latin1_General_CP1_CI_AS

                ALTER DATABASE

                [AdventureWorks2008] SET COMPATIBILITY_LEVEL = 100

                IF (1 =

                FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))

                begin

                EXEC

                [AdventureWorks2008].[dbo].[sp_fulltext_database] @action = 'enable'

                end

                ALTER DATABASE

                [AdventureWorks2008] SET ANSI_NULL_DEFAULT OFF

                ALTER DATABASE

                [AdventureWorks2008] SET ANSI_NULLS ON

                ALTER DATABASE

                [AdventureWorks2008] SET ANSI_PADDING ON

                ALTER DATABASE

                [AdventureWorks2008] SET ANSI_WARNINGS ON

                ALTER DATABASE

                [AdventureWorks2008] SET ARITHABORT ON

                ALTER DATABASE

                [AdventureWorks2008] SET AUTO_CLOSE ON

                ALTER DATABASE

                [AdventureWorks2008] SET AUTO_CREATE_STATISTICS ON

                ALTER DATABASE

                [AdventureWorks2008] SET AUTO_SHRINK ON

                ALTER DATABASE

                [AdventureWorks2008] SET AUTO_UPDATE_STATISTICS ON

                ALTER DATABASE

                [AdventureWorks2008] SET CURSOR_CLOSE_ON_COMMIT OFF

                ALTER DATABASE

                [AdventureWorks2008] SET CURSOR_DEFAULT  GLOBAL

                ALTER DATABASE

                [AdventureWorks2008] SET CONCAT_NULL_YIELDS_NULL ON

                ALTER DATABASE

                [AdventureWorks2008] SET NUMERIC_ROUNDABORT OFF

                ALTER DATABASE

                [AdventureWorks2008] SET QUOTED_IDENTIFIER ON

                ALTER DATABASE

                [AdventureWorks2008] SET RECURSIVE_TRIGGERS OFF

                ALTER DATABASE

                [AdventureWorks2008] SET ENABLE_BROKER

                ALTER DATABASE

                [AdventureWorks2008] SET AUTO_UPDATE_STATISTICS_ASYNC OFF

                ALTER DATABASE

                [AdventureWorks2008] SET DATE_CORRELATION_OPTIMIZATION OFF

                ALTER DATABASE

                [AdventureWorks2008] SET TRUSTWORTHY OFF

                ALTER DATABASE

                [AdventureWorks2008] SET ALLOW_SNAPSHOT_ISOLATION OFF

                ALTER DATABASE

                [AdventureWorks2008] SET PARAMETERIZATION SIMPLE

                ALTER DATABASE

                [AdventureWorks2008] SET READ_COMMITTED_SNAPSHOT OFF

                ALTER DATABASE

                [AdventureWorks2008] SET HONOR_BROKER_PRIORITY OFF

                ALTER DATABASE

                [AdventureWorks2008] SET READ_WRITE

                ALTER DATABASE

                [AdventureWorks2008] SET RECOVERY SIMPLE

                ALTER DATABASE

                [AdventureWorks2008] SET MULTI_USER

                ALTER DATABASE

                [AdventureWorks2008] SET PAGE_VERIFY CHECKSUM

                ALTER DATABASE

                [AdventureWorks2008] SET DB_CHAINING OFF

                USE

                [AdventureWorks2008]

                CREATE DATABASE

                ENCRYPTION KEY

                WITH ALGORITHM =

                AES_256

                ENCRYPTION BY SERVER

                CERTIFICATE [CERT_TDE]

                ALTER DATABASE

                [AdventureWorks2008] SET ENCRYPTION ON

14.   Używając konsoli PowerShell możesz także wykonywać instrukcje języka T-SQL. Pozwala na to komenda Invoke-Sqlcmd .:

Invoke-Sqlcmd -Query "SELECT * FROM

                Person.Address"

 Do początku strony Do początku strony

Konsola PowerShell – referencje

Dodatkowe informacje o konsoli PowerShell można znaleźć w internecie:

[1]   Michał Bednarz "Wstęp do PowerShell", artykuł na portalu www.wss.pl

[2]   Wpis na blogu Pawła Potasińskiego

[3]  Opis konsoli PowerShell na portalu simple-talk.com (w języku angielskim)

[4]  Biblioteka SMO

[5] „Serwer SQL 2008. Administracja i programowanie”, wyd. Helion S.A., grudzień 2008

[6]  Blog Marca van Orsouwa, MVP


  Damian Widera, Project Manager & Team Lead (MCT, MCITP – DBA, MCSD.NET)
Od 8 lat zajmuje się projektowaniem, tworzeniem i wdrażaniem aplikacji wykorzystujących platformę .NET, SQL Server oraz Oracle. Obecnie pracuje jako project manager dla LGBS Polska. Pracował także jako trener, programista, administrator baz danych, twórca domumentacji oraz analityk biznesowy. Aktywnie współpracuje z polskim oddziałem Microsoft publikując atykuły, webcasty oraz porady z zakresu SQL Server na stronach TechNet. Jest współautorem książki „Serwer SQL 2008. Administracja i programowanie”.

Speaker na wielu konferencjach, m.in. Microsoft Heroes Happen Here, C2C, European PASS Conference, Microsoft Technology Summit, Energy Launch, TechED. Od 2004 r. posiada certyfikaty firmy Microsoft: MCT, MCITP–DBA oraz MCSD.NET. Jest współtwórcą oraz liderem jednej z najwiekszych grup pasjonatów SQL Server w Polsce – Śląskiej Regionalnej Grupy Microsoft (PLSSUG Katowice). Od listopada 2008 jest prezesem Polish SQL Server Users Group (PLSSUG) w Polsce. W styczniu 2009 nagrodzony tytułem MVP w kategorii SQL Server.
 Do początku strony Do początku strony

Akademia SQL - Część 12: Nowości w T-SQL     Akademia SQL     Akademia SQL - Część 14: Studio monitoringu