Akademia SQL - Część 13: Konsola PowerShell

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 stronyDo 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

Akademia SQL - Część 13: Konsola PowerShell

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

Akademia SQL - Część 13: Konsola 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.

Akademia SQL - Część 13: Konsola PowerShell

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:

Akademia SQL - Część 13: Konsola 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:

Akademia SQL - Część 13: Konsola PowerShell

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

Akademia SQL - Część 13: Konsola PowerShell

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

Akademia SQL - Część 13: Konsola PowerShell

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 :

Akademia SQL - Część 13: Konsola PowerShell

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"

			
Akademia SQL - Część 13: Konsola PowerShell

Do początku stronyDo 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

Quiz

Sprawdź swoją wiedzę w quizie Akademii SQL


Damian Widera

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 (http://www.microsoft.com/poland/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: Microsoft Certified Trainer (MCT), Microsoft Certified IT Professional – Database Administrator (MCITP – DBA) oraz Microsoft Certified Solution Developer (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 stronyDo początku strony