Aracılığıyla paylaş


SQL Server PowerShell sağlayıcısı kullanma

The SQL Server provider for Windows PowerShell exposes the hierarchy of SQL Server objects in paths similar to file system paths.Bir nesneyi bulmak için yollar kullanın ve ardından gelen yöntemleri kullanın SQL Server nesneleri eylemleri gerçekleştirmek için yönetim nesne (smo) modelleri

sql Server PowerShell hiyerarşisi

Veri veya nesne olan modellerini bir hiyerarşi içinde temsil edilen ürünleri Windows PowerShell sağlayıcıları hiyerarşileri göstermek için kullanın.Hiyerarşi için Windows dosya sistemi kullanır benzer sürücü ve yol yapısını kullanarak açıktır.

Bir veya daha fazla sürücü her Windows PowerShell sağlayıcı uygular.Her sürücü ilgili nesne hiyerarşisinin kök düğümdür.The SQL Server provider implements a SQLSERVER: sürücü.sqlserver: sürücü, dört birincil klasörler vardır. Her klasörü ve onun alt klasörleri temsil küme kullanılarak erişilen nesnelerin bir SQL Server yönetimi nesne modeli.Bir alt klasörde bu birincil klasörler biri ile başlayan bir yol üzerinde odaklanmış, düğümü tarafından temsil edilen nesne üzerinde eylemler gerçekleştirmek için ilişkili bir nesne modeli yöntemleri kullanın.Windows PowerShell klasörler tarafından uygulanan SQL Server 2008 R2 Sağlayıcı listelenen aşağıdaki tablo.

Klasör

sql Server nesne modeli ad

Nesneleri

SQLSERVER:\SQL

Microsoft.SqlServer.Management.Smo

Microsoft.SqlServer.Management.Smo.Agent

Microsoft.SqlServer.Management.Smo.Broker

Microsoft.SqlServer.Management.Smo.Mail

Veritabanı nesneleri, tablolar, görünümler ve saklı yordamlar gibi.

SQLSERVER:\SQLPolicy

Microsoft.SqlServer.Management.Dmf

Microsoft.SqlServer.Management.Facets

İlkeye dayalı yönetim nesneleri, ilkeleri ve özellikleri gibi.

SQLSERVER:\SQLRegistration

Microsoft.SqlServer.Management.RegisteredServers

Microsoft.SqlServer.Management.Smo.RegSvrEnum

Sunucu gruplarını ve kayıtlı sunucuları gibi kayıtlı sunucu nesneleri.

SQLSERVER:\Utility

Microsoft.SqlServer.Management.Utility

Yönetilen örnekleri gibi yardımcı programı nesneleri Veritabanı Altyapısı.

SQLSERVER:\DAC

Microsoft.SqlServer.Management.DAC

dac paketleri ve bir dac dağıtma gibi işlemleri gibi veri katmanı uygulama nesneleri.

SQLSERVER:\DataCollection

Microsoft.SqlServer.Management.Collector

Gibi veri toplayıcı nesneleri koleksiyon kümeleri ve yapılandırma depolar.

Örneğin, SQLSERVER:\SQL klasörü smo nesne modeli tarafından desteklenen herhangi bir nesneyi gösteren yollar başlatmak için kullanabilirsiniz.Önde gelen bir SQLSERVER:\SQL yol SQLSERVER:\SQL\ parçasıdırBilgisayarAdı\ÖrnekAdı.Bir bilgisayar adı belirtmeniz gerekir.Localhost veya yerel bilgisayar için '(local') belirtebilirsiniz.Her zaman bile, varsayılan örneği için örnek adı belirtmeniz gerekir.Varsayılan örneği için varsayılan belirtin.Düğümler örnek adından sonra nesne sınıfları arasında alternatif (gibi Database veya View) ve nesne adları (örneğin AdventureWorks2008R2).Şemalar nesne sınıfları olarak temsil edilir.Bir tablo veya Görünüm gibi bir şema düğümü için bir üst düzey nesne belirttiğiniz, nesne adı biçiminde belirtmeniz gerekir SchemaName.ObjectName.

Bu yol, Vendor içinde tablo Purchasing şeması, AdventureWorks2008R2 içinde veritabanı bir varsayılan örnek , Veritabanı Altyapısı yerel bilgisayarda:

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

smo nesne modeli hiyerarşisi hakkında daha fazla bilgi için bkz: smo nesne Model Diyagramı.

Nesne sınıfı düğümler bir yol ilişkili bir nesne modelindeki bir koleksiyon sınıfı ile ilişkili.Nesne adı düğüm ile ilişkili bir nesne modeli, aşağıdaki gibi bir nesne sınıfının ilişkili tablo.

Yol

smo sınıfı

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases

DatabaseCollection

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

Database

Her durumda, başvuru örneği Veritabanı Altyapısı bir yolda SQL Server sağlayıcı smo örneği. Windows kimlik doğrulaması bağlantı açmak için kullandığıBağlantı, Windows PowerShell oturum çalıştıran Windows hesabı kimlik bilgileri bilgilerini kullanarak yapılır.The SQL Server provider does not use SQL Server Authentication.

sql Server yolları gezinme

Windows PowerShell cmdlet'leri sağlayıcı hiyerarşileri gidin ve geçerli nesne temel işlemleri gerçekleştirmek için uygular.Cmdlet'leri sık kullanıldığından, kısa, kurallı adlar sahip oldukları.Ayrıca benzer komut istemi komutları için cmdlet'leri eşleştiren bir diğer adlar küme vardır ve başka bir UNIX Kabuk komutları için ayarlayın.

The SQL Server provider implements a subset of the provider cmdlets, shown in the following table.

cmdlet

Kurallı diğer ad ad adı

cmd diğer ad ad adı

UNIX kabuk diğer ad ad adı

Açıklama

Alma konumu

GL

PWD

PWD

Geçerli düğüm alır.

Set-Location

SL

CD, chdir

CD, chdir

Geçerli düğüm değiştirir.

Al-ChildItem

gci

dir

ls

Geçerli düğümden saklanan nesneleri listeler.

GET-madde

GI

Geçerli özelliklerini döndürür öğe.

Öğeyi yeniden adlandırma

rni

rn

ren

Nesneyi yeniden adlandırır.

Öğeyi Kaldır

RI

DEL, rd

RM, rmdir

Bir nesne kaldırır.

Örneğin, aşağıdaki kümelerinden cmdlet'lerini veya diğer adlar listesini almak için kullanabileceğiniz SQL Server örnekleri SQLSERVER:\SQL klasöre gezinme ve alt öğeler için klasör listesini isterken tarafından kullanılabilir:

  • Tam cmdlet'i adları kullanma:

    Set-Location SQLSERVER:\SQL
    Get-ChildItem
    
  • Kurallı adlar kullanarak:

    sl SQLSERVER:\SQL
    gci
    
  • Cmd diğer ad kullanma:

    cd SQLSERVER:\SQL
    dir
    
  • UNIX kabuk diğer ad kullanma:

    cd SQLSERVER:\SQL
    ls
    
    Önemli notÖnemli

    Bazı SQL Server tanımlayıcıları (nesne adları) içeren karakterler, Windows PowerShell desteklemiyor yol adları.Bu karakterler içeren adları kullanma hakkında daha fazla bilgi için bkz: SQL Server tanımlayıcıları PowerShell içinde kullanma.

Al-ChildItem kullanma

Tarafından döndürülen bilgiler Al-ChildItem (veya kendi dir ve ls diğer adlar) bir sqlserver içinde bulunduğunuz yere göre değişir: yol.

Yolu konumu

Al-ChildItem sonuçlar

SQLSERVER:\SQL

Yerel bilgisayarın adını döndürür.smo veya WMI örneklerine bağlanmak için kullandığınız, Veritabanı Altyapısı diğer bilgisayarlarda, bu bilgisayarların da listelenir.

SQLSERVER:\SQL\BilgisayarAdı

Örneklerini listesini Veritabanı Altyapısı bilgisayar.

SQLSERVER:\SQL\BilgisayarAdı\ÖrnekAdı

Üst düzey nesne türleri listesini örnek, bitiş noktaları, sertifikalar ve veritabanları gibi.

Veritabanları gibi nesne sınıfı düğümü

Veritabanları listesi gibi bu tür nesneleri listesi: master, model, AdventureWorks20008R2.

Adı düğüm gibi nesne AdventureWorks2008R2

Nesnenin içinde bulunan nesne türlerinin listesi.Örneğin, bir veritabanı, tablolar ve görünümler gibi nesne türleri listeleyecek.

Varsayılan olarak, Al-ChildItem sistem nesnelerinin listesi.Use Force nesneleri gibi sistem nesneleri görmek için parametre sys şema.

Bu örnek yerel bilgisayar ve smo veya WMI bağlantısı yaptığınız herhangi bir bilgisayarda listeler:

Set-Location SQLSERVER:\SQL
Get-ChildItem

Bu örnek örneklerini listeler Veritabanı Altyapısı yerel bilgisayarda:

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

Bu örnekte ana sınıfları içinde kullanılabilen nesneleri listeler bir varsayılan örnek , Veritabanı Altyapısı.Bitiş noktaları, sertifikalar ve veritabanları gibi adlar listesini içerir:

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

Bu örnekte bulunan veritabanlarını listeler bir varsayılan örnek Veritabanı Altyapısı'nın.The Force parameter is used to include the system databases like master and model:

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

Yol düğümleri üzerinde eylemler gerçekleştirme

Windows PowerShell içinde bir düğüme çıkıldığında sonra yol, iki tür eylemleri gerçekleştirebilirsiniz:

  • Gibi her düğümde çalışan Windows PowerShell cmdlet öğelerini çalıştırabilirsiniz Yeniden Adlandır öğesini.

  • İlişkili yöntemlerini çağırabilir SQL Server yönetimi nesne modeli gibi smo.Örneğin, veritabanlarını düğümüne gidin, bir yol, yöntemleri ve özellikleri kullanabilirsiniz Database WalkTree

The SQL Server provider is used to manage the objects in an instance of the Veritabanı Altyapısı.Veritabanlarındaki verilerle çalışmak için kullanılmaz.Bir tablo ya da Görünüm yaptıysanız, sağlayıcı seçin, Ekle, Güncelleştir veya verileri silmek için kullanamazsınız.Use Invoke sqlcmd sorgulamak veya Windows PowerShell ortam veri tabloları ve görünümleri değiştirmek için cmdlet.Daha fazla bilgi için bkz: Invoke SQLcmd cmdlet'i kullanma.

Yöntemleri ve özellikleri listeleme

Kullanabileceğiniz Al-üye yöntemler ve özellikler için belirli nesne veya nesne sınıfları görmek için cmdlet.

Bu örnek, bir Windows PowerShell değişken smo için ayarlar Database sınıf ve yöntemlerini ve özelliklerini listeler:

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

Ayrıca Al-üye yöntem ve Windows PowerShell son düğümü ile ilişkili özellikleri listelemek için yol.

Bu örnek bir sqlserver içindeki Databases düğümünü gider: yol ve koleksiyon özelliklerini listeler:

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

Bu örnek bir sqlserver AdventureWorks2008R2 düğümüne gider: yol ve nesne özelliklerini listeler:

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

Yöntemlerini ve özelliklerini kullanarak

Windows PowerShell komutları smo özelliklerinde başvuruda bulunabilir.Bu örnek, smo kullanır şema özellik tablolarının bir listesini almak için Sales şemada AdventureWorks2008R2:

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

Bu örnek, smo kullanır Script yöntem içeren bir komut dosyası oluşturmak için CREATE VIEW ifadeleri yeniden oluşturma görünümlerinde olması gerekir 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 }

Bu örnek, smo kullanır Create sonra kullanır ve bir veritabanı oluşturmak için bir yöntem durumu veritabanının var olup olmadığını göstermek için özellik:

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

Özel tanımlama sürücüler

Windows PowerShell PowerShell sürücülerini adlandırılan sanal sürücülerin tanımlayın olanak verir.Bunlar, yol deyim başlangıç düğümleri eşleyin.Bunlar genellikle, sık sık yazılan yolları kısaltmak için kullanılır.SQLSERVER: Windows PowerShell penceresinde yer alır ve yazmaya çok gerektiren uzun yol alabilirsiniz.Belirli yol düğüm işte çok kullanacaksanız bu düğüme eşleştiren özel bir Windows PowerShell sürücüyü tanımlayabilirsiniz.Örneğin, çok sayıda iş yapıyorlarsa AdventureWorks2008R2 veritabanı, bir awdb oluşturabilirsiniz: sürücü:

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

Daha sonra awdb kullanabilirsiniz: yol kısaltmak için sürücü AdventureWorks2008R2 gibi nesneler Purchasing.Vendor tablo:

Set-Location AWDB:\Tables\Purchasing.Vendor

sql Server kimlik doğrulaması bağlantıları yönetme

Varsayılan olarak, SQL Server sağlayıcı , altında çalıştığı Windows kimlik doğrulaması bağlantı kurmak için Windows hesabını kullanır Veritabanı Altyapısı.Yapmak için bir SQL Server kimlik bilgileri doğrulama bağlantısı gerekir ilişkilendirmek SQL Server oturum açma kimlik bilgileri bilgilerine sahip bir sanal sürücüyü ve ardından change directory komutu (cd) o sürücüyü. bağlanmak içinWindows PowerShell içinde güvenlik kimlik bilgileri bilgilerini yalnızca sanal sürücüler ile ilişkili olabilir.

Bu komut dosyası adında bir işlev oluşturur sqldrive , belirtilen ile ilişkili olan sanal bir sürücü oluşturmak için kullanabileceğiniz SQL Server oturum açma kimlik doğrulaması ve örnek.

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
}

Daha sonra SQLAuth adlı sanal bir sürücüye oluşturabilirsiniz: Bu komutu çalıştırarak:

sqldrive SQLAuth

The sqldrive function prompts you to enter the password for your login, masking the password as you type it in.Ardından change directory komutunu kullandığınızda (cd) için bir yol SQLAuth kullanarak bağlanmak için: sürücü, kullanılarak gerçekleştirilen tüm işlemler SQL Server kimlik bilgileri doğrulaması oturum açma bilgileri sağladığınız zaman oluşturduğunuz sürücü.

Microsoft.SqlServer.Managment.Smo.Wmi ad alanı kullanılarak

Ek olarak SQL Server \sql, \SQLPolicy ve \SQLRegistration klasörleri ile ilişkili yönetim nesne modeli ad sınıflarını da kullanabilirsiniz Microsoft.SqlServer.Management.Smo.Wmi ad.En çok bu ad alanı sorgulamak ve her örnek uygulayan hizmetlerinin durumunu yönetmek için kullanılır Veritabanı Altyapısı veya bir ilke deposu.

Bu örnek, nasıl kullanılacağını gösterir ManagedComputer durdurmak ve başlatmak için sınıf hizmet bir varsayılan örneğini çalıştıran Veritabanı Altyapısı.

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

Not

Uzak bilgisayarlara karşı bu ad alanı sınıfları kullanmak için WMI dcom bağlantılara izin vermek için Windows güvenlik duvarını yapılandırmanız gerekir.Daha fazla bilgi için bkz: Windows Güvenlik Duvarı'nı SQL Server Erişimine İzin Vermek için Yapılandırma.

Sekme tamamlama yönetme

Windows PowerShell sekme tamamlama miktarını azaltır yazarak bunu yapmanız gerekir.Bir yol veya cmdlet adı parçası yazıldığında sekmesini ziyaret anahtar adları eşleşen önceden yazdığınız öğeler listesini almak için.Sonra da istediğiniz öğe listeden adı geri kalanı yazmadan seçebilirsiniz.

Çok sayıda nesne veritabanında çalışıyorsanız, sekme tamamlama listeleri çok büyük hale gelebilir.Bazı SQL Server görünümleri gibi nesne türleri de sahip çok sayıda sistem nesneleri.

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
    En fazla sekme tamamlama listesinde eklemek için nesne sayısını belirtir.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 varsayılan ayardır ve listelenen nesneleri sayısı için bir sınır yoktur anlamına gelir.

  • **$SqlServerMaximumChildItems =**n
    Tarafından görüntülenen nesnelerin en fazla sayısını belirtir Al-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 varsayılan ayardır ve listelenen nesneleri sayısı için bir sınır yoktur anlamına gelir.

  • $SqlServerIncludeSystemObjects = { $True | $False }
    If $True, system objects are displayed by tab-completion and Get-ChildItem.If $False, no system objects are displayed.Varsayılan ayar $False.

Aşağıdaki örnek, tüm üç değişkenlerini ayarlar ve bunların ayarlarını listeler:

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