Udostępnij za pośrednictwem


Za pomocą dostawcy programu SQL Server PowerShell

SQL Server Dostawca środowiska Windows PowerShell udostępnia hierarchię SQL Server obiektów w ścieżkach podobne do ścieżki systemu plików.Można użyć ścieżki, aby zlokalizować obiekt, a następnie użyj metody z SQL Server modeli zarządzania obiektu (SMO) do wykonywania działań na obiekty.

SQL Server Hierarchii PowerShell

Za pomocą środowiska Windows PowerShell dostawców produktów, których dane lub modeli obiektów może być reprezentowany w hierarchii narazić hierarchie.Hierarchii są udostępniane przy użyciu struktury dysk i ścieżka podobne używa systemu Windows systemu plików.

Każdy dostawca Windows PowerShell implementuje jeden lub więcej dysków.Każdy dysk jest głównym węzłem hierarchii obiektów pokrewnych. SQL Server dostawca implementuje SQLSERVER: dysk.SQLSERVER: dysk ma cztery foldery podstawowego. Każdy folder i jego podfolderów reprezentują zestaw obiektów, które są dostępne przy użyciu SQL Server modelu obiektów zarządzania.Kiedy są skupia się w podfolderze w ścieżka że rozpoczyna się od jednego z tych folderów podstawowe, umożliwia metod z modelu obiektu skojarzonego wykonywać czynności na obiekcie, który jest reprezentowany przez węzeł.Foldery Windows PowerShell implementowane przez SQL Server 2008 R2 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 tabel, widoków i procedur przechowywanych.

SQLSERVER:\SQLPolicy

Microsoft.SqlServer.Management.Dmf

Microsoft.SqlServer.Management.Facets

Zarządzanie oparte na zasadach obiektów, takich jak zasady i faset.

SQLSERVER:\SQLRegistration

Microsoft.SqlServer.Management.RegisteredServers

Microsoft.SqlServer.Management.Smo.RegSvrEnum

Obiekty zarejestrowane serwera, takie jak serwery zarejestrowane i grup serwerów.

SQLSERVER:\Utility

Microsoft.SqlServer.Management.Utility

Narzędzie obiektów, takich jak zarządzane wystąpienia Aparat baz danych.

SQLSERVER:\DAC

Microsoft.SqlServer.Management.DAC

Obiekty aplikacji warstwie danych, takie jak pakiety DAC i operacje, takie jak wdrażanie DAC.

SQLSERVER:\DataCollection

Microsoft.SqlServer.Management.Collector

Obiekty modułów zbierających dane, takie jak zestawy kolekcja i magazyny konfiguracja.

Na przykład można użyć folderu SQLSERVER:\SQL uruchomić ścieżek, reprezentujące każdy obiekt, który jest obsługiwany przez model 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.Zawsze należy określić nazwę instancji, nawet w przypadku wystąpienie domyślnego.Dla wystąpienia domyślnego należy określić domyślne.Węzły po nazwie wystąpienie alternatywne między klas obiektów (takich jak Database lub View) i nazwach obiektów (takich jak AdventureWorks2008R2).Schematy nie są reprezentowane jako klas obiektów.Po określeniu węzła najwyższego poziom obiektu w schemacie, na przykład tabela lub widoku, należy określić nazwę obiektu w formacie SchemaName.ObjectName.

Jest to ścieżka Vendor tabela w Purchasing schemat AdventureWorks2008R2 bazy danych w wystąpienie domyślne Aparat baz danych na komputerze lokalnym:

SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2008R2\Tables\Purchasing.Vendor

Aby uzyskać więcej informacji na temat hierarchii modelu obiektów SMO, zobacz Diagram modelu obiektów SMO.

Obiekt klasy węzłów w ścieżka są skojarzone z klasy zbioru w modelu obiektu skojarzonego.Węzły nazwy obiektów skojarzonych z klasy obiektu modelu skojarzonego obiektu, jak w poniższej tabela.

Path

Klasa obiektów SMO

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases

DatabaseCollection

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2008R2

Database

Ilekroć odwołać wystąpienie Aparat baz danych w ścieżka, SQL Server Dostawca wykorzystuje SMO do otwarcia połączenia uwierzytelniania systemu Windows do instancji.Połączenia przy użyciu poświadczenia konta systemu Windows uruchomione w sesja środowiska Windows PowerShell. SQL Server dostawca nie korzysta z SQL Server uwierzytelniania.

Poruszanie się po SQL Server ścieżki

Windows PowerShell implementuje apletów nawigacji hierarchie dostawca i wykonywanie podstawowych operacji na bieżącego obiektu.Aplety poleceń są często używane, mają one krótkie, kanoniczny aliasów.Jest również jeden zestaw aliasy, który mapuje apletów podobne polecenia wiersz polecenia, a inny zestaw poleceń powłoki systemu UNIX.

SQL Server dostawca implementuje podzbiór poleceń dostawca, przedstawione w poniższej tabela.

aplet polecenia

Kanoniczną alias.

cmd alias

Alias powłoki systemu UNIX

Opis

GET lokalizacji

GL

pwd

pwd

Pobiera bieżący węzeł.

Ustaw lokalizację

SL

CD i chdir

CD i chdir

Zmiany bieżącego węzła.

GET-ChildItem

gci

dir

ls

Wyświetla listę obiektów przechowywanych w bieżącym węźle.

Pobranie zapasu

GI

Zwraca właściwości bieżącego element.

Zmiana nazwy elementu

rni

rn

ren

Zmienia nazwę obiektu.

Usuń element

RI

del, pulpitu zdalnego

RM rmdir

Usuwa obiekt.

Na przykład, jeden z następujących zestawów apletów lub aliasy służy do pobierania listy SQL Server wystąpień dostępne przechodząc do folderu SQLSERVER:\SQL, a następnie żąda listy elementów podrzędność folderu:

  • Przy użyciu 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
    
    Ważna informacjaWażne:

    Niektóre SQL Server identyfikatory (nazwy obiektu) zawiera znaki, których nie obsługuje środowiska Windows PowerShell w nazwy ścieżka.Aby uzyskać więcej informacji na temat używania nazw zawierających te znaki, zobacz Za pomocą SQL Server identyfikatorów PowerShell.

Za pomocą Get-ChildItem

Informacje zwrócone przez Get childitem (lub jego dir i ls aliasów) zależy od lokalizacji w SQLSERVER: ścieżka.

Ścieżka lokalizacji

Wyniki Get-ChildItem

SQLSERVER:\SQL

Zwraca nazwę komputera lokalnego.Jeśli użyto SMO lub WMI połączyć wystąpienia Aparat baz danych na innych komputerach tych komputerów są także wyświetlane.

SQLSERVER:\SQL\nazwa_komputera

Listy wystąpień Aparat baz danych na komputerze.

SQLSERVER:\SQL\nazwa_komputera\nazwa_wystąpienia

Lista typów obiektów najwyższego poziom w wystąpienie, takich jak punkty końcowe, certyfikaty i baz danych.

Węzeł klasy obiektu, takich jak bazy danych

Lista obiektów tego typu, takich jak listy baz danych: master, model, AdventureWorks20008R2.

Obiekt takie jak nazwa węzła AdventureWorks2008R2

Lista typów obiektów zawartych wewnątrz obiektu.Na przykład bazy danych pojawi się lista typów obiektów takich jak tabele i widoki.

Domyślnie Get childitem nie są wyświetlane wszystkie obiekty systemowe.Użyj Force parametru, aby wyświetlić obiekty systemu, takie jak obiekty w sys schematu.

W tym przykładzie przedstawiono komputer lokalny i dowolnego komputera, na którym dokonano SMO lub WMI połączenia:

Set-Location SQLSERVER:\SQL
Get-ChildItem

W tym przykładzie przedstawiono wystąpienia Aparat baz danych na komputerze lokalnym:

Set-Location SQLSERVER:\SQL\localhost
Get-ChildItem

W tym przykładzie przedstawiono główne klasy obiektów dostępnych w wystąpienie domyślne Aparat baz danych.Lista zawiera nazwy, jak punkty końcowe, certyfikaty i baz danych:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT
Get-ChildItem

W tym przykładzie lista baz danych dostępne w wystąpienie domyślne aparatu bazy danych.Force Parametr jest używany do obejmują bazy danych systemu jak master i model:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases
Get-ChildItem -force

Wykonywanie akcji na węzłach ścieżki

Po przeszedł do węzła w Windows PowerShell ścieżka, można wykonać dwa rodzaje działań:

  • Można uruchamiać aplety poleceń środowiska Windows PowerShell działają na węzłach, takich jak Nazwy elementu.

  • Można wywołać metody ze skojarzonym SQL Server management object model, takich jak obiekty SMO.Na przykład przejdź do węzła baz danych w ścieżka, można użyć metod i właściwości Database klasy

SQL Server dostawca jest używany do zarządzania obiektami w wystąpienie z Aparat baz danych.Nie jest używany do pracy z danymi w bazach danych.Po przejściu do widoku lub tabela nie umożliwia dostawca zaznacz, wstawiania, aktualizacji lub usuwania danych.Użyj Polecenie Wywołaj-Sqlcmd polecenia lub zmieniać dane w tabelach i widokach ze środowiska Windows PowerShell.Aby uzyskać więcej informacji, zobacz Za pomocą polecenia polecenie Wywołaj-Sqlcmd.

Wyświetlanie właściwości i metod

Można użyć Członkowskie Get polecenia do przeglądania metod i właściwości dostępne dla konkretnych obiektów lub klas obiektów.

W tym przykładzie ustawia zmienną środowiska Windows PowerShell SMO Database klasy i zawiera metody oraz właściwości:

$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database
$MyDBVar | Get-Member –Type Methods
$MyDBVar | Get-Member -Type Properties

Można również użyć Członkowskie Get listę metod i właściwości, które są skojarzone z węzła końcowego ścieżka Windows PowerShell.

W tym przykładzie nawiguje do węzła baz 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 nawiguje do węzła AdventureWorks2008R2 w SQLSERVER: Ścieżka i list właściwości obiektu:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2008R2
Get-Item . | Get-Member -Type Properties

Za pomocą metod i właściwości

Można odwoływać się do właściwości obiektów SMO polecenia Windows PowerShell.W tym przykładzie użyto SMO schematu właściwość w celu uzyskania listy tabel z Sales schematu w AdventureWorks2008R2:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2008R2\Tables
Get-ChildItem | where {$_.Schema -eq "Sales"}

W tym przykładzie użyto SMO skryptu przez metoda skrypt zawierający CREATE VIEW musi być ponownie utworzyć widoki w sprawozdaniu AdventureWorks2008R2:

Remove-Item C:\PowerShell\CreateViews.sql
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2008R2\Views
foreach ($Item in Get-ChildItem) { $Item.Script() | Out-File -Filepath C:\PowerShell\CreateViews.sql -append }

W tym przykładzie użyto SMO Tworzenie metoda tworzenia bazy danych, a następnie używa Państwo właściwość do pokazywania, czy istnieje baza 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 dysków

Windows PowerShell umożliwia zdefiniowanie dysków wirtualnych, które są nazywane dyskami PowerShell.Te mapowania nad początkową węzły instrukcja ścieżka.Są one zazwyczaj używane skrócenie ścieżki, często wpisywanych.SQLSERVER: ścieżki można uzyskać długie, mając miejsce w oknie Windows PowerShell i wymagające dużej ilości wpisywanie.Jeśli zamierzasz dużo pracy w węźle określonej ścieżka, można zdefiniować dysk środowiska Windows PowerShell niestandardowych map do tego węzła.Na przykład, jeśli przeprowadzasz partii pracy w AdventureWorks2008R2 bazy danych, można utworzyć AWDB: dysk:

New-PSDrive -Name AWDB -Root SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2008R2

Następnie można użyć AWDB: dysk, aby skrócić ścieżka do AdventureWorks2008R2 obiektów, takich jak Purchasing.Vendor tabela:

Set-Location AWDB:\Tables\Purchasing.Vendor

Zarządzanie SQL Server uwierzytelniania połączeń

Domyślnie SQL Server Dostawca wykorzystuje konto systemu Windows, na którym jest uruchomiony połączenie uwierzytelniania systemu Windows, aby Aparat baz danych.Aby SQL Server uwierzytelniania połączenia należy skojarzyć SQL Server poświadczenia logowania z dysku wirtualnego, a następnie użyj polecenia Zmień katalog (cd) do łączenia się z tego dysku.W Windows PowerShell poświadczenia zabezpieczeń można skojarzyć tylko z dysków wirtualnych.

Ten skrypt tworzy funkcja o nazwie sqldrive można utworzyć dysk wirtualny, który jest skojarzony z określonym SQL Server uwierzytelniania logowania i wystąpienie.

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: uruchamiając polecenie:

sqldrive SQLAuth

Sqldrive funkcja monituje o wprowadzenie hasła podczas logowania, maskowanie hasła podczas wpisywania w.Następnie przy każdym użyciu polecenia Zmień katalog (cd) aby połączyć ścieżka za pomocą SQLAuth: dysk, wszystkie operacje są wykonywane za pomocą SQL Server Uwierzytelnianie poświadczenia logowania, które dostarczone podczas tworzenia dysku.

Korzystanie z nazw Microsoft.SqlServer.Managment.Smo.Wmi

Oprócz SQL Server Management Object Model obszarów nazw, które są skojarzone z \SQL, \SQLPolicy i \SQLRegistration folderów, można również użyć klasy w Microsoft.SqlServer.Management.Smo.Wmi obszaru nazw.Najczęściej tego obszaru nazw jest do wykonywania kwerend i zarządzania stanem realizacji każdego wystąpienie usługi Aparat baz danych lub magazynu zasad.

W tym przykładzie przedstawiono sposób użycia ManagedComputer klasy, aby zatrzymać i uruchomić usługa z systemem wystąpienie domyślne Aparat baz danych.

# 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"

Ostrzeżenie

Aby użyć klas w tym obszarze nazw przeciwko komputerów zdalnych, należy skonfigurować Zaporę systemu Windows, aby umożliwić WMI DCOM połączeń.Aby uzyskać więcej informacji, zobacz Konfigurowanie zapory systemu Windows w celu umożliwienia dostępu do programu SQL Server.

Zarządzanie kartę zakończenia

Uzupełnianie karcie Windows PowerShell zmniejsza ilość wpisywania należy wykonać.Po wpisaniu część nazwy ścieżka lub apletu polecenia po naciśnięciu przycisku kartę klucz w celu uzyskania listy elementów, których nazwy odpowiadają już wpisany.Następnie można wybrać żądany element z listy bez konieczności wpisywania pozostałą część nazwy.

Jeśli pracujesz w bazie danych, zawierająca wiele obiektów, list kartę zakończenia może stać się bardzo duży.Niektóre SQL Server Typy obiektów, takie jak widoki, również mają dużej liczby obiektów systemu.

SQL Server Trzy zmienne systemowe używane do kontrolowania ilości informacji przedstawionych przez kartę zakończenia wprowadzenie przystawek i 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 wymienionych.

  • **$SqlServerMaximumChildItems =**n
    Określa maksymalną liczbę obiektów wyświetlanych przez 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 wymienionych.

  • $SqlServerIncludeSystemObjects = { $True | $False }
    Jeśli $True, obiekty systemowe są wyświetlane przez kartę zakończenia i Get-childitem.Jeśli $False, obiekty systemowe nie są wyświetlane.Ustawieniem domyślnym jest $False.

Poniższy przykład Ustawia wszystkie trzy zmienne i ich ustawienia:

$SqlServerMaximumTabCompletion = 20
$SqlServerMaximumChildItems = 10
$SqlServerIncludeSystemObjects = $False
dir variable:sqlserver*