Aracılığıyla paylaş


SQL Server PowerShell sağlayıcı kullanma

The SQL Server Windows PowerShell sağlayıcı exposes the hierarchy of SQL Server objects in paths similar to file system paths. Nesneyi bulmak için yolları kullanın ve sonra yöntemleri kullanın SQL Server Nesneler üzerinde eylemleri gerçekleştirmek için Yönetim nesne (SMO) modeller.

SQL Server sağlayıcı sıradüzeni

Ürünleri, veri veya nesne modeli, hiyerarşik olarak temsil edilebilir Windows PowerShell sağlayıcıları hiyerarşileri göstermek için kullanın.Hiyerarşi, Windows dosya sistemini kullanan için benzer sürücü ve yol yapısı'nı kullanarak yararlanılır.

Her Windows PowerShell sağlayıcı, bir veya daha fazla sürücü uygular.Her sürücü ilişkili nesnelerin bir sıradüzenin kök düğümdür.The SQL Server sağlayıcı implements a SQLSERVER: sürücü. SQLSERVER: Sürücü, dört birincil klasörler vardır. Her klasör ve alt klasörleri kullanılarak erişilen nesneler kümesi temsil eden bir SQL Server Yönetimi nesne modeli. Bir alt klasörde birincil bu klasörlerden biri ile başlayan bir yol üzerinde odaklanmış olduğunda, ilişkili bir nesne modelinden yöntemleri düğümü tarafından temsil edilen bir nesne üzerinde eylemler gerçekleştirmek için kullanabilirsiniz.Windows PowerShell klasörler tarafından uygulanan SQL Server 2008 Sağlayıcı aşağıdaki tabloda listelenmiştir.

Klasör

SQL Server nesnesi 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

ilke temelli yönetim nesneleri, ilkeleri ve kısıtlamalar.

SQLSERVER:\SQLRegistration

Microsoft.SqlServer.Management.RegisteredServers

Microsoft.SqlServer.Management.Smo.RegSvrEnum

Kayıtlı bir sunucu gibi nesneleri, sunucu gruplarını ve kayıtlı sunucular.

SQLSERVER:\DataCollection

Microsoft.SqlServer.Management.Collector

Veri Toplayıcı gibi 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.Baştaki SQLSERVER:\SQL yol SQLSERVER:\SQL\ parçasıdırBilgisayaradı\Instancename.Bir bilgisayar adı belirtmeniz gerekir.Localhost veya yerel bilgisayar için `(local`) belirtebilirsiniz.Her zaman bile varsayılan örnekleri için örnek adını belirtmeniz gerekir.Varsayılan örnekleri için DEFAULT belirtin.Örnek adından sonra düğümler arasında nesne sınıfları (gibi diğer Database veya View) ve nesne adları (örneğin, AdventureWorks). Nesne sınıfları şemalar gösterilir.Düğüm bir üst düzey nesne için bir şema, bir tablo veya Görünüm gibi belirttiğinizde biçimde bulunan nesne adını belirtmeniz gerekir SchemaName.ObjectName.

Bu, yol Satıcı tablosunda bir varsayılan örnek AdventureWorks veritabanındaki Satınalma şemasını, Database Engine Yerel bilgisayar:

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

Hiyerarşi SMO nesne modeli hakkında daha fazla bilgi için bkz: SMO nesne model diyagramı.

Nesne sınıfı bir yol ilişkili nesne modelindeki bir koleksiyon sınıf ile ilişkili düğümlerdir.Nesne adı, aşağıdaki tabloda ilişkili nesne modelindeki bir nesne sınıfının ilişkili düğümlerdir.

Yol

SMO sınıfı

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases

DatabaseCollection

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks

Database

Her bir örneği'ni başvuru Database Engine bir yol, SQL Server Sağlayıcı SMO örnek bağlantı Windows kimlik doğrulaması'nı açmak için kullanır. Bağlantı Windows PowerShell oturum çalıştıran bir Windows hesabı kimlik bilgileri bilgilerini kullanarak yapılır.The SQL Server sağlayıcı does not use SQL Server kimlik doğrulaması.

SQL Server yollar gezinme

Windows PowerShell sağlayıcı hiyerarşileri gidin ve geçerli nesnenin temel işlemleri gerçekleştirmek için davranırlar uygular.Davranırlar sık kullanıldığından, bunlar kısa, kurallı adlar var.Ayrıca diğer adlar için benzer bir komut istemi komutları davranırlar eşleştiren bir kümesi vardır ve başka bir UNIX Kabuk komutlarını ayarlayın.

The SQL Server sağlayıcı implements a alt küme of the sağlayıcı cmdlets, shown in the following tablo.

cmdlet'i

Kurallı bir diğer 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.

küme Yeri

SL

CD (chdir

CD (chdir

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

GET ChildItem

gci

dir

ls

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

GET-öğe

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

Taşıma-öğe

mi

taşıma

MV

Bir nesneyi taşır.

Rename-CVE-2006-öğe

rni

rn

ren

Nesneyi yeniden adlandırır.

Kaldırma-CVE-2006-öğe

RI

DEL), rd

RM, rmdir

Bir nesne kaldırır.

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

  • Tam cmdlet'i adları kullanarak:

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

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

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

    cd SQLSERVER:\SQL
    ls
    
    Important noteImportant Note:

    Bazı SQL Servertanımlayıcı (nesne adları), Windows PowerShell yol adlarında desteği olmayan karakterler içeriyor. Bu karakterleri içeren adları'nı kullanma hakkında daha fazla bilgi için bkz: SQL Server tanımlayıcıları PowerShell içinde kullanma.

GET ChildItem kullanma

Döndürülen bilgi GET ChildItem (veya kendi dir and ls diğer adlar) bir SQLSERVER konumunuzdaki bağlıdır: yol.

yol konumu

GET ChildItem sonuçlar

SQLSERVER:\SQL

Yerel bilgisayarın adını döndürür.SMO veya WMI örnekleri için bağlanmak için kullandığınız, Database Engine diğer bilgisayarlarda, bu bilgisayarların da listelenmiştir.

SQLSERVER:\SQL\Bilgisayaradı

Örnekleri listesine Database Engine Bu bilgisayarda.

SQLSERVER:\SQL\Bilgisayaradı\Instancename

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

Nesne sınıfı, düğüm veritabanları gibi

Bu tür veritabanlarının listesi gibi nesneleri listesi: ana, modeli, AdventureWorks.

Nesne adı, düğüm AdventureWorks gibi

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

Varsayılan olarak, GET ChildItem sistem nesneleri listeler.Use Force Sistem nesneleri, nesnelerin gibi görmek için parametre sys şema.

Bu örnek, yerel bilgisayar ile bir SMO veya WMI bağlantısı yaptığınız herhangi bir bilgisayar listeler:

Set-Location SQLSERVER:\SQL
Get-ChildItem

Bu örnek örneklerini listeler Database Engine Yerel bilgisayar:

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

Bu örnekte ana bulunan nesne sınıflarını listeler bir varsayılan örnek, Database Engine. Bu liste, bitiş noktaları, sertifikalar ve veritabanları gibi adları içerir:

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

Bu örnek, veritabanı altyapısı varsayılan örneğinde kullanılabilir veritabanlarının listeler.The Force parameter is used to include the sistem veritabanları like master and model:

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

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

Bir Windows PowerShell bir düğüme gidilen sonra yol, iki eylemleri gerçekleştirebilirsiniz:

  • Düğümlerinde gibi çalışan Windows PowerShell davranırlar çalıştırabilirsiniz. Rename maddesi.

  • Ilişkili yöntemleri çağırabilir SQL Server SMO gibi yönetimi nesne modeli. Bir yol Databases düğümüne gidin, örneğin, yöntem ve özelliklerini kullanabileceğiniz Database sınıf.

The SQL Server sağlayıcı is used to manage the objects in an örnek of the Database Engine. Veritabanlarındaki verilerle çalışmak için kullanılmaz.Bir tablo veya görünüme geçiş ise, sağlayıcı seçin, Ekle, Güncelleştir veya verileri silmek için kullanamazsınız.Use Çağır sqlCmd Windows PowerShell ortamından tablolar ve görünümler, sorgu veya değişiklik veri cmdlet'i. Daha fazla bilgi için bkz: ınvoke sqlCmd cmdlet'i kullanma.

Yöntemleri ve özellikleri listeleniyor.

Kullanabileceğiniz GET-CVE-2006-üye cmdlet'i belirli bir nesne veya nesne sınıfları için kullanılabilen özellikleri ve yöntemleri görüntülemek için.

Bu örnek, nasıl yapılır: SMO yöntemlerinin listesini gösterir. Database sınıf:

[Microsoft.SqlServer.Management.SMO.Database] | Get-Member -Type Methods

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

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

Ayrıca GET-üyelik , yöntemleri ve Windows PowerShell yolun son düğümle ilişkili özellikleri listeleyin.

Bu örnek, bir SQLSERVER Databases düğümüne gider: yol ve listeler koleksiyon özelliklerini:

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

Bu örnek, AdventureWorks düğümü olarak bir SQLSERVER gider: yol ve nesne özellikleri listeler:

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

Yöntemleri ve özellikleri'ni kullanma

Windows PowerShell Komut SMO özelliklerinde başvuruda bulunabilir.Bu örnek, AdventureWorks Satış şemasından tabloların bir listesini almak için SMO Schema özellik kullanır:

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

Bu örnek, SMO komut dosyası yöntem içeren bir komut dosyası oluşturmak için kullandığı CREATE VIEW ifadeleri, AdventureWorks görünümlerde yeniden olmalıdır:

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 }

Bu örnek, bir veritabanı oluşturmak için SMO Create yöntem kullanır ve sonra da veritabanının var olup olmadığını göstermek için State özelliğini kullanır:

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 kullanıcılar için Windows PowerShell sürücüler veya ps sürücüleri olarak başvurulan sanal sürücüler, tanımlama sağlar.Bu, bir yol ifadesinin başlangıç düğümlerin üzerinde eşleyin.Genellikle sık yazılan yolu kısaltmak için kullanılırlar.sqlserver: Windows PowerShell penceresinde yer alır ve yazarak çok gerektiren uzun yol alabilirsiniz. Çok iş belirli bir yol bir düğümdeki oluşturacaksanız, bu düğüme eşleştiren özel bir Windows PowerShell sürücü tanımlayabilirsiniz.Örneğin, çok sayıda iş AdventureWorks veritabanındaki gerçekleştirdiğiniz, bir AWDB oluşturabilirsiniz: sürücü:

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

Sonra AWDB kullanabilirsiniz: Purchasing.Vendor tablo gibi AdventureWorks nesneler yol kısaltmak için sürücü:

Set-Location AWDB:\Tables\Purchasing.Vendor

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

Varsayılan olarak, SQL Server sağlayıcı için Windows kimlik doğrulaması bağlantı yapmak için altında çalıştığı Windows hesabını kullanır Database Engine. Yapmak için bir SQL Server kimlik bilgileri doğrulaması bağlantı ilişkilendirmelisiniz SQL Server oturum açma kimlik bilgileri bilgilerine bir sanal sürücü ve değişiklik dizin komutu (kullanıncd) bu sürücüye bağlanmak için. Windows PowerShell ', güvenlik kimlik bilgileri bilgilerini yalnızca sanal sürücü ile ilişkili olabilir.

Bu komut dosyası adında bir işlev oluşturur. sqldrive ile belirtilen ilişkili sanal bir sürücü oluşturmak için kullanabileceğinizSQL Server kimlik doğrulaması ile oturum açma 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
}

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

sqldrive SQLAuth

The sqldrive işlev prompts you to enter the password for your login, masking the password as you type it in.Sonra kullandığınız her değişikliği dizin komutu (cd) için bir yol SQLAuth kullanarak bağlanmak için: Sürücü, kullanarak gerçekleştirilen tüm işlemlerSQL Server Sürücü oluşturduğunuzda sağladığınız kimlik bilgileri doğrulaması oturum açma bilgileri.

Microsoft.SqlServer.Managment.smo.Wmi ad kullanma

Ek olarak SQL Server Ad \SQL, \SQLPolicy ve \SQLRegistration klasörleri ile ilişkili olan Yönetim nesne modeli alanları, sınıfların de kullanılabilir Microsoft.SqlServer.Management.Smo.Wmi ad alanı. Sorgulamak ve her uygulama hizmetleri durumunu yönetmek için en yaygın kullanımı bu ad olan örnek, Database Engine veya bir ilke deposu.

Bu örnekte ManagedComputer sınıf varsayılan bir örneğini çalıştıran bir hizmet durdurmak ve nasıl kullanılacağı gösterilmiştir 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"

Not

Uzak bilgisayarlarda bu ad alanındaki sınıfların 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: SQL Server erişimi için izin vermek için Windows Güvenlik Duvarı'nı yapılandırma.

Sekme tamamlama yönetme

Windows PowerShell sekmesini tamamlanma miktarı azaltır yazarak bunu yapmalısınız.Yazdığınız yol veya cmdlet'i adı bölümü, zaten yazdığınız adları eşleşen öğeleri listesini almak için SEKME tuşuna isabet.Sonra diğer adı yazmak zorunda olmadan istediğiniz öğeyi listeden seçebilirsiniz.

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

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
    Bir sekme tamamlanma listesinde dahil etmek için nesneleri sayısı 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 nesnelerinin sayısı, sınır olduðu anlamýna gelir.

  • **$SqlServerMaximumChildItems =**n
    Tarafından görüntülenen nesnelerin sayısı üst sınırını belirtir 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 varsayılan ayardır ve listelenen nesnelerinin sayısı, sınır olduðu anlamýna gelir.

  • $ SqlServerIncludeSystemObjects = { $ True | $ Yanlış }
    If $ Truesistem nesneleri, sekme tamamlama ve tarafından görüntülenir.GET ChildItem.If $ Yanlış, görüntülenen nesnelerin sistemi yok.Varsayılan ayar $ Yanlış.

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*

Değişiklik Geçmişi

Güncelleştirilmiş içerik

Sözdizimi hatası, kod bloklarında smo.Database başvuran sabit.SQL'I başvurular kaldırıldı: sürücü ile SQLSERVER değiştirildi: sürücü.