Using the SQL Server PowerShell Provider
The SQL Server Windows PowerShell dostawca exposes the hierarchy of SQL Server objects in paths similar to file system paths. Aby zlokalizować obiekt za pomocą ścieżki, a następnie za pomocą metody z SQL Server Zarządzanie modele obiektów (obiekty SMO) do wykonywania akcji na obiekty.
Hierarchia dostawca programu SQL Server
Produkty, których modele danych lub obiekt może być reprezentowany w hierarchii za pomocą dostawcy PowerShell systemu Windows dostępne hierarchie.Hierarchia są prezentowane za pomocą struktury dysków i ścieżka podobne do systemu Windows system plików.
Każdy dostawca PowerShell Windows implementuje jednego lub większej liczby dysków.Każdy dysk jest głównym węzłem w hierarchii obiektów pokrewnych.The SQL Server dostawca implements a SQLSERVER: dysk. SQLSERVER: dysk ma cztery foldery podstawowego. Każdy folder i jego podfolderów reprezentuje zestaw obiektów, których można uzyskiwać dostęp za pomocą SQL Server model obiektów zarządzania. Gdy użytkownik się podfolderu w ścieżce, który rozpoczyna się od jednego z tych folderów podstawowego, umożliwia metod z modelu skojarzonego obiektu wykonywać czynności na obiekcie, który jest reprezentowany przez węzeł.Foldery systemu Windows PowerShell implementowane przez SQL Server 2008 dostawca są wymienione w poniższej tabela.
Folder |
Obszar nazw modelu obiektów programu SQL Server |
Obiekty |
---|---|---|
SQLSERVER:\SQL |
Microsoft.SqlServer.Management.Smo Microsoft.SqlServer.Management.Smo.Agent Microsoft.SqlServer.Management.Smo.Broker Microsoft.SqlServer.Management.Smo.Mail |
Obiekty bazy danych, takie jak tabele, widoki i procedury przechowywane. |
SQLSERVER:\SQLPolicy |
Microsoft.SqlServer.Management.Dmf Microsoft.SqlServer.Management.Facets |
zarządzanie oparte na regułach obiekty, takie jak zasady i aspekty. |
SQLSERVER:\SQLRegistration |
Microsoft.SqlServer.Management.RegisteredServers Microsoft.SqlServer.Management.Smo.RegSvrEnum |
Serwer zarejestrowanych obiektów, takich jak grupy serwerów i zarejestrowane serwery. |
SQLSERVER:\DataCollection |
Microsoft.SqlServer.Management.Collector |
Obiekty modułów zbierających dane, takie jak zestawy kolekcja i konfiguracja są przechowywane. |
Na przykład służy folder SQLSERVER:\SQL uruchomić ścieżek, reprezentujące każdy obiekt, który jest obsługiwany przez model obiektowy obiektów SMO.Początkowe części ścieżka SQLSERVER:\SQL jest SQLSERVER:\SQL\Nazwa_komputera\Nazwa_wystąpienia.Należy określić nazwę komputera.Można określić localhost lub `(local`) dla komputera lokalnego.Należy zawsze określić tę nazwę, nawet w przypadku wystąpienie domyślnego.W przypadku wystąpienia domyślnego określić domyślny.Węzły po nazwie wystąpienie alternatywne między klasami obiektów (takich jak Database lub View) i nazwach obiektów (takich jak AdventureWorks). Schematy nie są przedstawiane jako klas obiektów.Po określeniu węzła dla obiektu najwyższego poziom w schemacie, takie jak tabela lub widok, należy określić nazwę obiektu w formacie SchemaName.ObjectName.
Jest to ścieżka w schemacie zakup AdventureWorks bazy danych w tabela dostawców wystąpienie domyślne z Database Engine na komputerze lokalnym:
SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks\Tables\Purchasing.Vendor
Aby uzyskać więcej informacji na temat hierarchii modelu obiektów SMO obiektów Zobacz Diagram modelu obiektów obiektów SMO.
Obiekt klasy węzłów w ścieżka są skojarzone z klasą kolekcja w modelu obiektu skojarzonego.Obiekt nazwy węzłów są skojarzone z klasa obiektów w modelu skojarzonego obiektu, tak jak w poniższej tabela.
Ścieżka |
Klasa obiektów SMO |
---|---|
SQLSERVER:\SQL\MyComputer\DEFAULT\Databases |
DatabaseCollection |
SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks |
Database |
Za każdym razem, gdy odwołać wystąpienie Database Engine w przypadku ścieżka SQL Server Dostawca otwiera połączenie uwierzytelnianie systemu Windows do wystąpienia za pomocą obiektów SMO. Połączenie jest ustanawiane przy użyciu poświadczenia konta systemu Windows z systemem Windows PowerShell sesja.The SQL Server dostawca does not use SQL Server uwierzytelnianie.
Przeglądanie ścieżki serwera SQL
System Windows PowerShell implementuje cmdlets nawigacji hierarchie dostawca i wykonywanie podstawowych operacji na obiekcie bieżącym.Ponieważ cmdlets są często używane, muszą się krótkie, kanoniczny aliasów.Jest także jeden zestaw aliasy mapuje cmdlets podobne polecenia wiersz polecenia, a drugi ustawione dla poleceń powłoki systemu UNIX.
The SQL Server dostawca implements a podzbiór of the dostawca cmdlets, shown in the following tabela.
apletu polecenia |
Kanoniczną alias |
cmd alias |
Alias powłoki systemu UNIX |
Description |
---|---|---|---|---|
Pobieranie lokalizacji |
GL |
pwd |
pwd |
Pobiera bieżącego węzła. |
Ustawianie lokalizacji |
SL |
CD i chdir |
CD i chdir |
Powoduje zmianę bieżącego węzła. |
Polecenie GET ChildItem |
gci |
dir |
ls |
Wyświetla listę obiektów przechowywanych w bieżącym węźle. |
Pobieranie zapasów |
GI |
Zwraca wartość właściwości bieżącego element. |
||
Przenieś element |
mi |
Przenoszenie |
mV |
Przenosi obiekt. |
Zmiana nazwy element |
rni |
rn |
ren |
Zmienia nazwę obiektu. |
Usuń element |
RI |
del, rd |
ZW rmdir |
Usuwa obiekt. |
Na przykład można użyć jedną z następujących zestawów cmdlets lub aliasy do pobrania zawiera listę SQL Server wystąpienia dostępne przechodząc do folderu SQLSERVER:\SQL a żąda listy elementów podrzędność do tego folderu:
Korzystanie z apletu polecenia pełnej nazwy:
Set-Location SQLSERVER:\SQL Get-ChildItem
Za pomocą aliasów kanonicznym:
sl SQLSERVER:\SQL gci
Za pomocą aliasów cmd:
cd SQLSERVER:\SQL dir
Za pomocą aliasów powłoki systemu UNIX:
cd SQLSERVER:\SQL ls
Important Note: Niektóre SQL Server identyfikatory (nazw obiektów) zawiera znaki, które PowerShell system Windows nie obsługuje nazw ścieżka. Aby uzyskać więcej informacji na temat używania nazw zawierających te znaki zobacz Using SQL Server Identifiers in PowerShell.
Za pomocą ChildItem GET
Informacje zwrócone przez Polecenie GET ChildItem (lub jego dir and ls aliasów) zależy od lokalizacji użytkownika w SQLSERVER: ścieżka.
Ścieżka lokalizacji |
Polecenie GET ChildItem wyniki |
---|---|
SQLSERVER:\SQL |
Zwraca nazwę komputera lokalnego.Jeśli użyto obiekty SMO lub usługi WMI do łączenia się z wystąpieniami Database Engine na innych komputerach na komputerach, są także wyświetlane. |
SQLSERVER:\SQL\Nazwa_komputera |
Na liście wystąpień Database Engine na komputerze. |
SQLSERVER:\SQL\Nazwa_komputera\Nazwa_wystąpienia |
Na liście typów obiektu najwyższego poziom w wystąpienie, takich jak punkty końcowe, certyfikaty i bazy danych. |
Węzeł klasy obiektów, takich jak bazy danych |
Lista obiektów tego typu, takich jak listy baz danych: model główny, AdventureWorks. |
Węzeł nazwę obiektu, na przykład AdventureWorks |
Lista typów obiektów należących do obiektu.Na przykład baza danych będzie lista typów obiektów, takich jak tabele i widoki. |
Domyślnie Polecenie GET ChildItem nie ma żadnych obiektów systemu.Użycie Force parametr, aby wyświetlić obiekty systemowe, takie jak obiekty w sys schematu.
W tym przykładzie przedstawiono na komputerze lokalnym i dowolnego komputera, do których dokonano połączenie obiekty SMO lub usługi WMI:
Set-Location SQLSERVER:\SQL
Get-ChildItem
W tym przykładzie wyświetla listę wystąpień Database Engine na komputerze lokalnym:
Set-Location SQLSERVER:\SQL\localhost
Get-ChildItem
W tym przykładzie przedstawiono główne klasy obiektów, które są dostępne w wystąpienie domyślne z Database Engine. Na liście znajdują się nazwy takie jak punkty końcowe, certyfikaty i bazy danych:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT
Get-ChildItem
W tym przykładzie lista baz danych dostępne w domyślnym wystąpienie aparat bazy danych.The Force parameter is used to include the bazy danych systemu like master and model:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases
Get-ChildItem -force
Wykonuje operacje w węzłach ścieżka
Po przejściu do węzła w PowerShell Windows ścieżka, można wykonać dwa typy działań:
Można uruchomić cmdlets PowerShell systemu Windows, które działają na węzłach, takich jak Zmiana nazwy element.
Można wywołać metody ze skojarzonym SQL Server model obiektów zarządzania, takie jak obiekty SMO. Na przykład, jeżeli przejdziesz do węzła bazy danych w ścieżce, można użyć metody i właściwości Database Klasa.
The SQL Server dostawca is used to manage the objects in an wystąpienie of the Database Engine. Nie jest używany do pracy z danymi w bazach danych.Jeśli przeszedł do tabela lub widoku, można użyć dostawca zaznacz, wstawiania, aktualizacji lub usuwania danych.Użycie Wywołaj Sqlcmd apletu polecenia do kwerendy lub zmiany danych w tabelach i widokach ze środowiska Windows PowerShell.Aby uzyskać więcej informacji zobacz Using the Invoke-Sqlcmd cmdlet.
Wyświetlanie właściwości i metody
Można użyć Polecenie GET-element członkowski apletu polecenia do przeglądania metod i właściwości dostępne dla określonych obiektów lub klas obiektów.
W tym przykładzie przedstawiono sposób wyświetlić listę metod obiektów SMO Database klasy:
[Microsoft.SqlServer.Management.SMO.Database] | Get-Member -Type Methods
W tym przykładzie ustawia zmienną PowerShell Windows obiektów SMO Database Klasa i list właściwości:
$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database
$MyDBVar | Get-Member -Type Properties
Można również użyć Polecenie GET Członkowskich , aby wyświetlić listę metod i właściwości, które są skojarzone z węzła końcowego ścieżka PowerShell systemu Windows.
W tym przykładzie przechodzi do węzeł bazy danych w SQLSERVER: Ścieżka i list właściwości kolekcja:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases
Get-Item . | Get-Member -Type Properties
W tym przykładzie przechodzi do węzła AdventureWorks w SQLSERVER: Ścieżka i list właściwości obiektu:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks
Get-Item . | Get-Member -Type Properties
Za pomocą metody i właściwości
Można odwoływać się do właściwości obiektów SMO w poleceniach PowerShell systemu Windows.W tym przykładzie użyto właściwość obiektów SMO, Schema w celu uzyskania listy tabel ze schematu sprzedaży w AdventureWorks:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks\Tables
Get-ChildItem | where {$_.Schema -eq "Sales"}
W tym przykładzie użyto do wygenerowania skrypt zawierający z metoda skryptu obiekty SMO CREATE VIEW Aby ponownie utworzyć widoki w AdventureWorks, musisz mieć instrukcji:
Remove-Item C:\PowerShell\CreateViews.sql
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks\Views
foreach ($Item in Get-ChildItem) { $Item.Script() | Out-File -Filepath C:\PowerShell\CreateViews.sql -append }
Ten przykład używa metoda Create obiektów SMO można utworzyć bazę danych, a następnie używa właściwość stan do pokazywania, czy istnieje w bazie danych:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases
$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database
$MyDBVar.Parent = (Get-Item ..)
$MyDBVar.Name = "NewDB"
$MyDBVar.Create()
$MyDBVar.State
Definiowanie niestandardowych dyski
PowerShell systemu Windows pozwala użytkownikom na definiowanie dysków wirtualnych, które są określane jako ps dysków lub dysków PowerShell systemu Windows.Mapowania te nad początkowym węzłów instrukcja ścieżka.Zwykle służą one do skrócenia ścieżek, które są wpisane często.SQLSERVER: ścieżki, można uzyskać długości, pobieranie miejsce w oknie PowerShell systemu Windows i wymagające dużej ilości wpisywanie. Jeśli zamierzasz wykonać dużą ilość pracy w węźle określonej ścieżka, można zdefiniować niestandardową dysku PowerShell systemu Windows, który jest mapowany na tym węźle.Na przykład jeśli prowadzona jest dużo pracy w bazie danych AdventureWorks, można utworzyć AWDB: dysk:
New-PSDrive -Name AWDB -Root SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks
Następnie można użyć AWDB: dysk, aby skrócić ścieżka dostępu do obiektów AdventureWorks, takich jak tabela Purchasing.Vendor:
Set-Location AWDB:\Tables\Purchasing.Vendor
Zarządzanie połączeniami uwierzytelnianie programu SQL Server
Domyślnie SQL Server Dostawca korzysta z konta systemu Windows, na których jest uruchomiony połączenie uwierzytelnianie systemu Windows do Database Engine. Aby wprowadzić SQL Server Uwierzytelnianie połączenia, musisz skojarzyć SQL Server poświadczenia logowania z dysk wirtualny, a następnie użyj (polecenia Zmień katalogcd) do łączenia się z tego dysku. W systemie Windows PowerShell poświadczenia zabezpieczeń może być tylko skojarzony z dysków wirtualnych.
Ten skrypt tworzy funkcja o nazwie sqldrive można użyć, aby utworzyć dysk wirtualny, który jest skojarzony z określonym SQL Server Uwierzytelnianie logowania i instancji.
function sqldrive
{
param( [string]$name, [string]$login = "MyLogin", [string]$root = "SQLSERVER:\SQL\MyComputer\MyInstance" )
$pwd = read-host -AsSecureString -Prompt "Password"
$cred = new-object System.Management.Automation.PSCredential -argumentlist $login,$pwd
New-PSDrive $name -PSProvider SqlServer -Root $root -Credential $cred -Scope 1
}
Następnie można utworzyć dysk wirtualny o nazwie SQLAuth: Po uruchomieniu tego polecenia:
sqldrive SQLAuth
The sqldrive funkcja prompts you to enter the password for your login, masking the password as you type it in.Następnie przy każdym użyciu (polecenia Zmień katalogcd) do łączenia się do ścieżka przy użyciu SQLAuth: dysk, wszystkie operacje są wykonywane przy użyciu SQL Server Uwierzytelnianie poświadczenia logowania podanych podczas tworzenia dysku.
Za pomocą obszaru nazw Microsoft.SqlServer.Managment.smo.Wmi
Oprócz SQL Server Obszary nazw modelu obiektów zarządzania związane z \SQL \SQLPolicy i \SQLRegistration foldery, można również użyć klasy w Microsoft.SqlServer.Management.Smo.Wmi obszar nazw. Jest to najbardziej powszechne zastosowanie tego obszaru nazw do wykonywania kwerend i zarządzania stanem usług, które implementują każde wystąpienie Database Engine lub magazyn zasad.
W tym przykładzie przedstawiono sposób użycia klasy ManagedComputer zatrzymać i uruchomić usługa z systemem domyślnego wystąpienie Database Engine.
# Get a reference to the ManagedComputer class.
cd SQLSERVER:\SQL\localhost
$Wmi = (get-item .).ManagedComputer
# Display the object properties.
$Wmi
# Get a reference to the default instance of the Database Engine.
$DfltInstance = $Wmi.Services["MSSQLSERVER"]
# Display the state of the service.
$DfltInstance
# Stop the service.
$DfltInstance.Stop(); write-host "Stopped"
# Refresh the cache and look at the state.
$DfltInstance.Refresh(); $DfltInstance
# Start the service again.
$DfltInstance.Start(); write-host "Started"
Uwaga
Aby skorzystać z klas w tym obszarze nazw przed komputerami zdalnymi, należy skonfigurować Zapora systemu Windows do zezwalania na połączenia DCOM usługi WMI.Aby uzyskać więcej informacji zobacz Configuring the Windows Firewall to Allow SQL Server Access.
Zarządzanie karta zakończenie
Karta PowerShell systemu Windows-ukończenie zmniejsza ilość wpisywania trzeba wykonać.Po wpisaniu część nazwy ścieżka lub apletu polecenia trafisz może klawisz TAB w celu uzyskania listy elementów, których nazwy odpowiadają już wpisany.Można następnie wybrać żądany element z listy bez konieczności wpisywania pozostałą część nazwy.
Podczas pracy w bazie danych, która jest dużo obiektów list kartę zakończenia może stać się bardzo duży.Niektóre SQL Server typy obiektów, takich jak widoki, także mają dużą liczbę obiektów systemu.
The SQL Server snap-ins introduce three system variables that you can use to control the amount of information presented by tab-completion and Get-ChildItem.
**$SqlServerMaximumTabCompletion =**n
Określa maksymalną liczbę obiektów, które mają zostać uwzględnione w liście kartę zakończenia.If you select Tab at a path node having more than n objects, the tab-completion list is truncated at n.n is an integer.0 jest ustawieniem domyślnym, a oznacza brak limitu liczby obiektów na liście.**$SqlServerMaximumChildItems =**n
Określa maksymalną liczbę obiektów wyświetlanych przez Polecenie GET ChildItem.If Get-ChildItem is run at a path node having more than n objects, the list is truncated at n.n is an integer.0 jest ustawieniem domyślnym, a oznacza brak limitu liczby obiektów na liście.$ SqlServerIncludeSystemObjects = { Wartość true $ | $ FAŁSZ }
Jeśli Wartość true $, obiekty są wyświetlane przez kartę zakończenia i systemuPolecenie GET ChildItem.Jeśli $ FAŁSZ, bez systemu, obiekty są wyświetlane.Ustawieniem domyślnym jest $ FAŁSZ.
Poniższy przykład Ustawia wszystkie trzy zmienne i wyświetla listę ustawień:
$SqlServerMaximumTabCompletion = 20
$SqlServerMaximumChildItems = 10
$SqlServerIncludeSystemObjects = $False
dir variable:sqlserver*
Historia zmian
Microsoft Learning |
---|
Błędy składniowe stałych w odwołującym się smo.Database bloki kodu.Usunięto odwołania do SQL: dysk, który został zastąpiony SQLSERVER: dysk. |