Udostępnij za pośrednictwem


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 noteImportant 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.