Akademia SQL - Część 13: Konsola PowerShell
Autor: Damian Widera
Opublikowano: 20 stycznia 2009
Zawartość strony
Konsola PowerShell – informacje podstawowe | |
Konsola PowerShell – laboratorium | |
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
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
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 |